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

Abi*_*ndo 2 c# linq

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>();
Run Code Online (Sandbox Code Playgroud)

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

任何人都可以帮助我使用LINQ代码从两个列表中选择不同的元素?

谢谢

W92*_*W92 13

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

lst3 = list1.Union(lst2).OrderBy(p=>p).ToList();
Run Code Online (Sandbox Code Playgroud)


Ami*_*oki 5

基本上,你可以做到

lst1.AddRange(lst2);
List<int> lst3  = lst1.Distinct().ToList();
Run Code Online (Sandbox Code Playgroud)


小智 5

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

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

var lst3 = hashSet.ToList();
Run Code Online (Sandbox Code Playgroud)

林克:

var lst3 = lst1.Union(lst2).ToList();
Run Code Online (Sandbox Code Playgroud)

  • `Union` 已经删除了重复项,不需要 `Distinct` (2认同)