查找不在其他列表中的元素

时间:2014-05-06 19:52:12

标签: c# linq

我正在尝试查找不包含在其他列表中的字符串值。

我的列表如下:

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的正确加入,但是没有成功。也许有人知道这个问题的正确解决方案吗?

4 个答案:

答案 0 :(得分:5)

使用Enumerable.Except

  

使用默认值生成两个序列的集合差异   等于比较来比较值。

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()应该起作用