Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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;
}