使用 LINQ 从两个列表中选择不同的元素

本文关键字:选择 元素 列表 两个 LINQ 使用 | 更新日期: 2023-09-27 18:25:39

List<int> lst1 = new List<int>{1,2,3,5,2};
List<int> lst2 = new List<int>{4,5,6,1,6};
List<int> lst3 = new List<int>();

预期输出:lst3={1,2,3,4,5,6}

谁能帮我使用 LINQ 代码从两个列表中选择不同的元素?

谢谢

使用 LINQ 从两个列表中选择不同的元素

使用 Union() 方法,该方法生成两个列表的集合联合,返回一个新列表,其中包含两个列表中存在的所有项:

lst3 = list1.Union(lst2).OrderBy(p=>p).ToList();

基本上,你可以做

lst1.AddRange(lst2);
List<int> lst3  = lst1.Distinct().ToList();

另一种方法(我认为最有效的方法[摊销](:

var hashSet = new HashSet<int>(lst1);
foreach (var item in lst2) 
{
    hashSet.Add(item);
}
var lst3 = hashSet.ToList();

林克:

var lst3 = lst1.Union(lst2).ToList();

您可以使用 UNION 并从结果集中获取 DISTINCT 值

lst3 = lst1.Union(lst2).Distinct().ToList();

基本方法

        List<int> lst3 = new List<int>();
        foreach (int x in lst1)
            if (!lst3.Contains(x))
                lst3.Add(x);
        foreach (int x in lst2)
            if (!lst3.Contains(x))
                lst3.Add(x);