我有两个列表例如: 1:
ID | Number
-------------
01 | 20
02 | 50
04 | 2500
2:
ID | Number
-------------
01 | 10
02 | 20
03 | 1500
我想要回来的最终名单是:
ID | Number
-------------
01 | 30
02 | 70
03 | 1500
04 | 2500
我如何使用Linq完成它?
答案 0 :(得分:6)
您可以使用Zip
方法。
public class MyClass
{
public int Id { get; set; }
public string Number { get; set; }
}
然后试试这个:
List<MyClass> fist = new List<MyClass>(); //add some data
List<MyClass> second = new List<MyClass>(); //add some data
fist.Zip(second,
(i1, i2) => new MyClass() { Id = i1.Id, Number = i1.Number + i2.Number });
答案 1 :(得分:2)
我找到了答案,
var mergedList = list1.Concat(list2)
.GroupBy(person => person.ID)
.Select(group => group.Aggregate(
(merged, next) => merged.Merge(next)))
.ToList();
感谢您帮助我找到答案。
答案 2 :(得分:0)
您应该加入列表。这是一个例子:
public class Item
{
public int ID { get; set; }
public int Number { get; set; }
}
List<Item> firstList = new List<Item>();
List<Item> secondList = new List<Item>();
List<Item> finalList = firstList.Join(
secondList,
item => item.ID,
item => item.ID,
(item, item1) => new Item() { ID = item.ID, Number = item.Number + item1.Number }).ToList();