我有两个清单:
List<int> listA
List<int> listB
Run Code Online (Sandbox Code Playgroud)
如何使用LINQ检查是否listA
存在一个元素wichich deos不存在listB
?我可以使用foreach
循环,但我想知道我是否可以使用LINQ来做到这一点
cad*_*ll0 87
listA.Except(listB)
会给你listA中不在listB中的所有项目
the*_*ric 14
listA.Any(_ => listB.Contains(_))
Run Code Online (Sandbox Code Playgroud)
:)
你可以在一行中完成
var res = listA.Where(n => !listB.Contains(n));
Run Code Online (Sandbox Code Playgroud)
这不是最快的方法:如果listB
相对较长,这应该更快:
var setB = new HashSet(listB);
var res = listA.Where(n => !setB.Contains(n));
Run Code Online (Sandbox Code Playgroud)
使用Any()获取两个列表的差异。如果满足条件, LinqAny()
函数将返回布尔值,但您可以使用它返回两个列表的差异:
var difference = ListA.Where(a => !ListB.Any(b => b.ListItem == a.ListItem)).ToList();
Run Code Online (Sandbox Code Playgroud)