我有 3 个列表列表
ListMaster contains {1,2,3,4,....} ..getting populated from DB
List1 contains {1,3,4}
List2 contains {1,3,95}
如何使用 linq 检查主列表中存在哪些列表项
var inMaster = List1.Intersect(ListMaster);
或两个列表:
var inMaster = List1.Intersect(List2).Intersect(ListMaster);
检查list1,list2中的任何项目是否存在于master中
var existInMaster = inMaster.Any();
您可以使用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();
您可以使用Enumerable.Intersect
类似的方法;
通过使用默认相等比较器比较值来生成两个序列的集合交集。
var inMaster1 = List1.Intersect(ListMaster);
var inMaster2 = List2.Intersect(ListMaster);
这是一个DEMO
.