形成两个列表的并集的最简单方法

R.S*_*S.K 66 .net c# linq union list

比较两个列表的元素最简单的方法是将A和B相互比较,并且只有当它们不存在于A中时才将B中存在的元素添加到A中?

为了说明,选择列表A = {1,2,3}列表B = {3,4,5}

所以在操作AUB之后我想要列表A = {1,2,3,4,5}

Til*_*lak 118

如果是列表,您还可以使用AddRange方法.

var listB = new List<int>{3, 4, 5};  
var listA = new List<int>{1, 2, 3, 4, 5};

listA.AddRange(listB); // listA now has elements of listB also.
Run Code Online (Sandbox Code Playgroud)

如果您需要新列表(并排除重复列表),则可以使用Union

  var listB = new List<int>{3, 4, 5};  
  var listA = new List<int>{1, 2, 3, 4, 5};
  var listFinal = listA.Union(listB);
Run Code Online (Sandbox Code Playgroud)

如果您需要新列表(并包含副本),则可以使用Concat

  var listB = new List<int>{3, 4, 5};  
  var listA = new List<int>{1, 2, 3, 4, 5};
  var listFinal = listA.Concat(listB);
Run Code Online (Sandbox Code Playgroud)

如果您需要常用项目,可以使用Intersect.

var listB = new List<int>{3, 4, 5};  
var listA = new List<int>{1, 2, 3, 4};  
var listFinal = listA.Intersect(listB); //3,4
Run Code Online (Sandbox Code Playgroud)

  • 由于在搜索相关操作时首先弹出此答案,因此最好添加 [Intersect](https://msdn.microsoft.com/en-us/library/bb460136(v=vs.110).aspx) (3认同)

das*_*ght 27

最简单的方法是使用LINQ的Union方法:

var aUb = A.Union(B).ToList();
Run Code Online (Sandbox Code Playgroud)


Pra*_*thy 8

使用LINQ的联盟

Enumerable.Union(ListA,ListB);
Run Code Online (Sandbox Code Playgroud)

要么

ListA.Union(ListB);
Run Code Online (Sandbox Code Playgroud)


cod*_*ife 5

我想这就是你真正需要做的事情:

var listB = new List<int>{3, 4, 5};
var listA = new List<int>{1, 2, 3, 4, 5};

var listMerged = listA.Union(listB);
Run Code Online (Sandbox Code Playgroud)