2011-07-12 6 views
1

IDのリストを取得する検索方法があり、そのIDに基づいてクエリを制限したいと考えています。Where句が結果を返さない場合

のParam:IEnumerableをのfilterType

foreach (int id in filterType) 
{ 
    query = query.Where(q => q.Item1 == id); 
} 

私がしようとした場合:

foreach (int id in filterType) 
{ 
    query = query.Where(q => q.Item1 != id); 
} 

動作するようです。

誰でも知っていますか?

ありがとうございます。

答えて

4

複数where句は一緒に効果的に「AND-ED」です - ので、あなたのfilterTypeリストは5と10を持っていた場合、あなたはItem1はそれができない、両方の5 10でなければならなかったと言うことだろう同時に。

私はあなたが実際にしたい疑う:つまり

query = query.Where(q => filterType.Contains(q.Item1)); 

を、どこItem1試合filterType値のいずれか。 (。?あなたはまたfilterTypeが空である場合を考慮したいと思うかもしれないマッチのすべてまたは何も必要があります)

+0

感謝を! – markpcasey

2

query = query.Where(q => q.Item1 == id);を行うことにより、あなたは効果的に次のようなクエリを構築している:

query.Where(q => q.Item1 == id1) 
    .Where(q => q.Item1 == id2) 
    .Where(q => q.Item1 == id3) 
    .Where(q => q.Item1 == id4); 

どのアイテムは2つの異なるIDを持つことはできません。

あなたはおそらくしたい:それは本当に私の頭を台無したことについて

query.Where(q = filterType.Contains(q.Item1)); 
関連する問題