Compartir a través de


Cómo: Convertir un tipo en datos IEnumerable genéricos (LINQ to SQL)

Utilice AsEnumerable<TSource> para devolver el argumento cuyo tipo es una interfaz genérica IEnumerable.

Ejemplo

En este ejemplo, LINQ to SQL (mediante la Query genérica predeterminada) intentaría convertir la consulta en SQL y ejecutarla en el servidor. Sin embargo, la cláusula where hace referencia a un método de cliente definido por el usuario (isValidProduct), que no se puede convertir a SQL.

La solución es especificar la implementación de interfaz genérica IEnumerable<T> de where en el cliente para reemplazar la interfaz genérica IQueryable<T>. Para ello se invoca al operador AsEnumerable<TSource>.

Private Function isValidProduct(ByVal prod As Product) As Boolean
    Return prod.ProductName.LastIndexOf("C") = 0
End Function

Sub ConvertToIEnumerable()
    Dim db As New Northwnd("c:\northwnd.mdf")
    Dim validProdQuery = _
        From prod In db.Products.AsEnumerable _
        Where isValidProduct(prod) _
        Select prod
End Sub
private bool isValidProduct(Product prod)
{
    return prod.ProductName.LastIndexOf('C') == 0;
}

void ConvertToIEnumerable()
{
    Northwnd db = new Northwnd(@"c:\test\northwnd.mdf");
    Program pg = new Program();
    var prodQuery =
        from prod in db.Products.AsEnumerable()
        where isValidProduct(prod)
        select prod;
}

Vea también

Otros recursos

Ejemplos de consultas (LINQ to SQL)