Procédure : convertir un type en IEnumerable générique (LINQ to SQL)
Mise à jour : November 2007
Utilisez AsEnumerable<TSource> pour retourner l'argument typé comme un IEnumerable générique.
Exemple
Dans cet exemple, LINQ to SQL (à l'aide du Query générique par défaut) tente de convertir la requête en SQL et de l'exécuter sur le serveur. Toutefois, la clause where fait référence à une méthode côté client définie par l'utilisateur (isValidProduct) qui ne peut pas être convertie en SQL.
La solution consiste à spécifier l'implémentation IEnumerable<T> générique côté client de where pour remplacer le IQueryable<T> générique. Vous pouvez pour cela appeler l'opérateur 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;
}