我正在尝试查找不包含在其他列表中的字符串值。
我的列表如下:
var list1 = new List<string>();
list1.Add("element1");
list1.Add("element2");
var list2 = new List<string>();
list2.Add("element1");
list2.Add("element2");
list2.Add("element3");
我需要从list2中找到不在list1中的元素,因此结果应该只是:element3
。我尝试做一些类似LINQ的正确加入,但是没有成功。也许有人知道这个问题的正确解决方案吗?
答案 0 :(得分:5)
使用默认值生成两个序列的集合差异 等于比较来比较值。
var result = list2.Except(list1);
另一种方法可能是:
var result = list2.Where(r => !list1.Contains(r));
如果您需要List<string>
作为结果,则只需添加ToList()
即可。
答案 1 :(得分:0)
list1.Except(list2)
返回2个IEnumerables之间的集合差异:MSDN
答案 2 :(得分:0)
使用Except
var list3 = list2.Except(list1);
答案 3 :(得分:0)
list2.Except(List1)
.Except()应该起作用