2014-03-31 49 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)});