查找不是';t在其他列表中

本文关键字:其他 列表 查找 | 更新日期: 2023-09-27 18:02:07

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

我有这样的列表:

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做一些类似right join的事情,但没有成功。也许有人知道正确的解决方案?

查找不是';t在其他列表中

使用Enumerable.Except

使用默认值生成两个序列的集差相等比较器,用于比较值。

var result = list2.Except(list1);

另一种方法是:

var result = list2.Where(r => !list1.Contains(r));

如果您需要一个List<string>作为结果,那么只需添加ToList()即可。

list1.Except(list2)

返回两个IEnumerables:MSDN 之间的设置差异

除外使用

var list3 = list2.Except(list1);
list2.Except(List1)

Except((应该工作