「ローカルコレクションでクエリがサポートされていない」、私は "を指定するとID idのローカルに作成されたコレクション内に含まれている人々の集まり(のIQueryable)だから、例外
を返すようにしようとしていますローカルに作成されたコレクション "、私は、LinqToSqlクエリから来ていないIdsコレクションは、(ユーザー入力に基づいて)プログラムで作成されていることを意味します。私のクエリは次のようになります :
var qry = from p in DBContext.People
where Ids.Contains(p.ID)
select p.ID;
これは、次の例外が発生し...
私はそのIDを持つすべての人を見つけることができますどのように
を「ローカルコレクションでクエリがサポートされていません」私のローカルに作成されたIdsコレクションに含まれていますか?
LinqToSqlを使用することは可能ですか?
私はあなたの問題に対する解決策がこの答えよりも微妙だと思います。私は同じ構築(WHERE句のIQueryableのメソッドを含む)を成功させ、LINQ to SQLはそれをSQLクエリのWHERE EXISTS句に変換します。それはいくつかの状況で動作するように思われますので、あなたがIds IQueryableをどのように取得するのかを投稿してください。 –
私の答えが十分明確でない場合、L2SはEnumerable.Containsに渡されたローカルのIEnumerable(遅延IQueryableではない)を期待しています。ローカルクエリを渡すと、SQLクエリに変換することはできません。リスト/配列/ etcを渡すと、SQL "where ... in(x、y、...、n)"節に変換できます。 – KristoferA
私はあなたが言っていることを見ていると思う: - リスト/配列/等を渡す。 OKですが、WHERE ... IN句が生成されます。 - 遅延IQueryableを渡すことはOKです。現在の遅延クエリと統合されます。 - ローカルのIEnumerableを渡すことはできませんが、それは.ToList()だけで問題ありません。 –