次の方法で共有


方法 : 型を汎用 IEnumerable に変換する (LINQ to SQL)

更新 : November 2007

汎用 IEnumerable として型指定された引数を返すには、AsEnumerable<TSource> を使用します。

使用例

この例では、LINQ to SQL (既定の汎用 Query を使用) は、クエリを SQL に変換し、サーバー上での実行を試みます。しかし、where 句が、SQL に変換できない、ユーザー定義のクライアント側メソッド (isValidProduct) を参照しています。

これを解決するには、クライアント側の汎用 IEnumerable<T> 実装の where を指定し、汎用 IQueryable<T> を置き換えます。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;
}

参照

その他の技術情報

クエリの例 (LINQ to SQL)