81

比较两个列表中的元素的最简单方法是 A 和 B,并且只有在 A 中不存在的情况下才将 B 中存在的元素添加到 A 中?

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

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

4

5 回答 5

154

如果是列表,也可以使用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
于 2012-11-22T04:01:40.867 回答
31

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

var aUb = A.Union(B).ToList();
于 2012-11-22T03:59:14.660 回答
8

使用 LINQ 的联合

Enumerable.Union(ListA,ListB);

或者

ListA.Union(ListB);
于 2012-11-22T04:00:28.273 回答
5

我认为这是您真正需要做的一切:

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

var listMerged = listA.Union(listB);
于 2012-11-22T03:59:46.353 回答
0

如果是两个 IEnumerable 列表,您不能使用AddRange,但可以使用Concat.

IEnumerable<int> first = new List<int>{1,1,2,3,5};
IEnumerable<int> second = new List<int>{8,13,21,34,55};

var allItems = first.Concat(second);
// 1,1,2,3,5,8,13,21,34,55
于 2019-12-05T16:33:41.103 回答