C# 与列表比较<;字符串>;使用linq?

C# 与列表比较<;字符串>;使用linq?,c#,asp.net,.net,linq,C#,Asp.net,.net,Linq,我有三张单子 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(ListMast

我有三张单子

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);
检查主目录中是否存在列表1、列表2中的任何项目

var existInMaster = inMaster.Any();
您可以使用:

如果您想知道哪些在
列表1
中,哪些不在主列表中,请使用
除了

var newInList1 = List1.Except(ListMaster);
对于
列表2

var newInList2 = List2.Except(ListMaster);
我可以使用list.all来检查另一个列表中列表的所有项目是否存在错误吗 字符串列表

所以您想知道一个列表中的所有项目是否都在另一个列表中。然后使用
Except
+
Any
更有效(如果列表很大),因为
Intersect
Except
在内部使用集合,而
All
循环所有元素

例如,主列表是否包含
List1
List2
的所有字符串

bool allInMaster = !List1.Concat(List2).Except(ListMaster).Any();
你可以使用这样的方法

使用默认值生成两个序列的集合交点 用于比较值的相等比较器


这是一个。

我可以使用列表吗。all用于检查另一个列表中列表的所有项,以查找可枚举的字符串列表。
除了使用
+
任何
之外,所有都比使用
效率低得多。
bool allInMaster = !List1.Concat(List2).Except(ListMaster).Any();
var inMaster1 = List1.Intersect(ListMaster);
var inMaster2 = List2.Intersect(ListMaster);