Partager via


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;
}

Voir aussi

Autres ressources

Exemples de requêtes (LINQ to SQL)