HOW TO:將型別轉換為泛型 IEnumerable (LINQ to SQL)
更新: November 2007
使用 AsEnumerable<TSource> 傳回型別設為泛型 IEnumerable 的引數。
範例
在此範例中,LINQ to SQL (使用預設泛型 Query) 會嘗試將查詢轉換為 SQL,並且在伺服器上執行查詢。但是,where 子句會參考使用者定義的用戶端方法 (isValidProduct),而該方法無法轉換為 SQL。
解決方案為指定 where 的用戶端泛型 IEnumerable<T> 實作,以取代泛型 IQueryable<T>。您可藉由叫用 (Invoke) 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;
}