比较两个列表C#

时间:2014-10-08 07:12:22

标签: c# linq compare

我有两个清单

List<int> a = {1,2,3};
List<int> b = {3,4};

我需要以输出应

的方式比较它们
1 false
2 false
4 true

输出是使用以下逻辑

  • 1,2位于a但不在b中,因此设置为false
  • 3在两个列表中,因此它不在输出中
  • &#39; 4&#39;在b但不在a中,因此它们设置为true

返回类型是具有List<modelClass>属性

int id, bool isTrue

你能帮助我吗?

1 个答案:

答案 0 :(得分:2)

如果您不关心性能,可以使用以下LINQ:

a.Except(b)
  .Union(b.Except(a))
  .Select(item => new { id = item, isTrue = b.Contains(item) });

使用HashSet

var setA = new HashSet<int>(a);
var setB = new HashSet<int>(b);
setA.SymmetricExceptWith(b);

var result = setA.Select(item => new { id = item, isTrue = setB.Contains(item) });