共用方式為


將類型轉換為泛型 IEnumerable

使用 AsEnumerable 傳回型別設為泛型 IEnumerable 的引數。

範例

在此範例中,LINQ to SQL (使用預設泛型 Query) 會嘗試將查詢轉換為 SQL,並在伺服器上加以執行。 但是,where 子句會參考使用者定義的用戶端方法 (isValidProduct),而該方法無法轉換為 SQL。

解決方案為指定 IEnumerable<T> 的用戶端泛型 where 實作,以取代泛型 IQueryable<T>。 您可藉由叫用 (Invoke) AsEnumerable 運算子來完成這項作業。

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

另請參閱