2

例如,我有两个列表: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 做到这一点?

4

3 回答 3

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 });
于 2013-04-06T11:25:44.080 回答
2

我找到了答案,

var mergedList = list1.Concat(list2)
                  .GroupBy(person => person.ID)
                  .Select(group => group.Aggregate(
                                     (merged, next) => merged.Merge(next)))
                  .ToList();

感谢您帮助我得到答案。

于 2013-04-06T11:43:57.550 回答
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();
于 2013-04-06T11:26:33.017 回答