Gewusst wie: Konvertieren eines Typs in eine generische IEnumerable (LINQ to SQL)

Aktualisiert: November 2007

Verwenden Sie AsEnumerable<TSource>, um das als generische IEnumerable eingegebene Argument zurückzugeben.

Beispiel

In diesem Beispiel würde LINQ to SQL (mit der generischen Standard-Query) versuchen, die Abfrage in SQL zu konvertieren und auf dem Server auszuführen. Die where-Klausel verweist jedoch auf eine benutzerdefinierte clientseitige Methode (isValidProduct), die nicht in SQL konvertiert werden kann.

Die Lösung erfordert das Definieren der clientseitigen generischen IEnumerable<T>-Implementierung von where, um das generische IQueryable<T> zu ersetzen. Rufen Sie hierzu den AsEnumerable<TSource>-Operator auf.

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

Siehe auch

Weitere Ressourcen

Beispiele für Abfragen (LINQ to SQL)