2012-11-22 46 views
49

比较两个列表的元素的最简单方法是将A和B彼此相加,并将只存在于B中的元素添加到A中,但前提是它们不存在于一个?最简单的方法来形成两个列表的联合

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

所以操作奥布后欲 列表A = {1,2, 3,4,5}

回答

77

如果它是一个列表,你也可以使用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. 

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

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

如果你需要新的列表(并包括重复的),你可以使用Concat

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

如果您需要共同物品,您可以使用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 
+0

由于这个答案办理相关业务搜索时首先弹出,这将是很好的补充[相交](https://msdn.microsoft.com/en-us/library/bb460136(V = VS。 110).aspx) – KOTIX

+0

感谢您对所有相关方法的详细解释。非常感谢你。保持。 –

5

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

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

var listMerged = listA.Union(listB); 
7

使用LINQ的Union

Enumerable.Union(ListA,ListB); 

ListA.Union(ListB); 
相关问题