2014-07-07 114 views
0

我有一個整數列表。我需要從數據源中選擇一個特定字段/列匹配列表中每個int的元素。Linq AND列表中的每個項目

數據源例

ItemID ListID 
1  1 
1  2 
2  1 

我要找到匹配從包含列表ID 1和2

目前我使用的是列出所有ListIDs所有的項目......

List<Item> items = (from element in MyItems where listIDs.Contains(element.ListID) select element).ToList(); 

但是,這會爲每個不同的ItemID跨多行生成OR查詢而不是AND查詢。

+0

相交嗎?你想要的元素是myitems和listids共同的嗎? – Rangesh

+0

您只想將itemId或ItemId與listId與MyItems中的相應列匹配 –

回答

0

如果您試圖比較兩個列表是否相等,那麼您可以使用SequenceEqual方法。

沿線

list<item> results = (from element in MyItems where listIDs.SequenceEqauls(element.ListID) select element).ToList(); 

什麼我不能完全肯定,如果我正確地理解你的問題。當你說「特定的領域/專欄」時,那個領域/專欄是否也有某種集合?

0

如果我有你的問題!那就試試這個

var MyItems=<your data column values> 
var ItemsMatch=MyItems.Where(z=>MyIntsList.Contains(int.Pars(z.ToString()))).ToArray(); 
0

我不知道我理解的問題。我認爲您有一個列表,並且您嘗試匹配列表ID爲& ItemID等於ANY項目的行。如果這就是你所SKING這個,這是一個辦法做到這一點:你想匹配兼​​得ListID & ITEMID等於列表中的SAME項目行

List<Item> items = from element in MyItems 
where listIDs.Contains(element.ListID) and listIDs.Contains(element.ItemID) 

或許。如果這就是你所SKING這個,這是一個辦法做到這一點:

List<Item> items = from element in MyItems 
where listIDs.Contains(element.ListID) and element.ListID == element.ItemID 
0

如果我理解正確的話,這會做:

var result = (from item in MyItems 
       from i in listIDs 
       where i == item.ListId 
       select item).ToList(); 

它會得到在MyItems列表中的所有項目對象ListId存在於ListId中。

相關問題