2014-03-31 31 views
0

我有多个元素列表中有一个日期和一个值。使用Linq的列表清单的元素总和

firstList有(例如):

01/01/2013 , 100 

02/01/2013 , 444 

03/01/2013 , 357 

. 
. 
. 

其他列表中有更多的日期及其它值

而且我在List<List<myElements>> myListOfLists;

添加每个列表现在,我应该怎么做才能有1个结果列表,其中包含每个日期的所有值的总和?

感谢,

+0

我可以知道为什么我会得到一个投票吗? – Oliver

回答

2

我想这myElement的定义是这样的:

public class Item 
{ 
    public DateTime Date { get; set; } 
    public double Amount {get; set; } 
} 

然后您最初的名单将类型为List<List<Item>>。你可以把量总和在同一日期,如果你压扁您最初的名单,象下面这样:

List<Item> result = myListOfLists.SelectMany(x => x) 
            .GroupBy(x => x.Date) 
            .Select(grp => new Item 
            { 
             Date = grp.Key, 
             Amount = grp.Sum(y => y.Amount) 
            }).ToList(); 

Here是提供解决方案的测试环节。

+0

谢谢,正是我需要的 – Oliver

+0

@欢迎你! – Christos

0

你首先要扁平化你的列表清单到一个列表,然后组由日期,然后总和每个组。

你没有表现出任何代码,但它应该是沿:

var result = yourListOfLists.SelectMany(x => x) 
          .GroupBy(x => x.TheDateProperty) 
          .Select(grp => new {key = grp.Key, 
               sum = grp.Sum(e => e.TheNumber)});