使用Linq与自定义IEqualityComparer相交或联合

时间:2013-08-22 14:26:28

标签: linq c#-4.0

我在内存中有2组calection,我想根据2返回一组。我的对象有以下结构:

class Item 
{
  public string key {get,set;}
  public int total1 {get;set;}
  public int total2 {get ;set;}
}

我想“联合”它们,以便当项目表单集1上的键等于集合2中项目的键时,我的联合应返回如下项目:

item_union.Key= item1.key==item2.key;
item_union.total1= item1.total1 + item2.total1;
item_union.total2= item1.total2 + item2.total2;

有人可以告诉我如何构建我的自定义相等比较器以获得此结果吗?

非常感谢提前

1 个答案:

答案 0 :(得分:2)

听起来可能想要加入,或者可能只想连接集合,按键分组然后对属性求和:

// Property names changed to conform with normal naming conventions
var results = collection1.Concat(collection2)
                         .GroupBy(x => x.key)
                         .Select(g => new Item {
                                     Key = g.Key,
                                     Total1 = g.Sum(x => x.Total1),
                                     Total2 = g.Sum(x => x.Total2)
                                 });