"Method 'Boolean Contains(System.String)'にはSQLへの変換がサポートされていません。メソッド 'Boolean Contains(System.String)'にはSQLへの変換がサポートされていません
クエリはIsQueryableですが、これは動作を停止:
foreach (string s in collection1)
{
if (s.Length > 0)
{
query = query.Where(m => m.collection2.Contains(s));
}
}
UPDATE:私はクエリ "IEnumerableを" の代わりにIQueryableを作るとき、それが動作します。ループを繰り返し処理する代わりにlinqを使って同じ結果を得る方法は何でしょうか?
は、あなたはそれがこのループに入る前に、あなたのクエリが何であるかを投稿することができますか? –
純粋なLINQを使用しても何も変わりません - 同じ問題があります。理由が不明なため、LINQが "奇妙な"コレクションをHashSetとして検出してIEnumerableとして使用しない場合、ユーザーは自分のコレクションを直接IEnumerableに変換しなければなりません - 次にContaintsはSQLに正しく変換されます。 – greenoldman