我有3个列表列表
ListMaster contains {1,2,3,4,....} ..getting populated from DB
List1 contains {1,3,4}
List2 contains {1,3,95}
如何使用linq
检查主列表中存在哪些列表项答案 0 :(得分:5)
var inMaster = List1.Intersect(ListMaster);
或两个清单:
var inMaster = List1.Intersect(List2).Intersect(ListMaster);
检查list1,list2中是否有任何项目存在于主
中var existInMaster = inMaster.Any();
答案 1 :(得分:3)
您可以使用Enumerable.Intersect
:
var inMaster = ListMaster.Intersect(List1.Concat(List2));
如果您想知道List1
中哪些不在主列表中,请使用Except
:
var newInList1 = List1.Except(ListMaster);
和List2
:
var newInList2 = List2.Except(ListMaster);
我可以使用列表.all来检查另一个列表中列表的所有项目 字符串列表
因此,您想知道一个列表中的所有项目是否都在另一个列表中。然后使用Except
+ Any
效率更高(如果列表很大),因为Intersect
和Except
在内部使用集合,而All
循环所有元素。
例如,主列表是否包含List1
和List2
的所有字符串?
bool allInMaster = !List1.Concat(List2).Except(ListMaster).Any();
答案 2 :(得分:2)
您可以使用Enumerable.Intersect
方法;
使用默认值生成两个序列的集合交集 等于比较来比较值。
var inMaster1 = List1.Intersect(ListMaster);
var inMaster2 = List2.Intersect(ListMaster);
这是DEMO
。