2014-07-07 76 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中。

相关问题