2012-11-14 101 views
4

到字典我有列表< DTO>其中DTO類看起來是這樣的,轉換列表<T>與戰略

private class DTO 
    { 
     public string Name { get; set; } 
     public int Count { get; set; } 
    } 

我創建對象,並將其添加到列表。

var dto1 = new DTO { Name = "test", Count = 2 }; 
var dto2 = new DTO { Name = "test", Count = 3 }; 
var dtoCollection = new List<DTO> {dto1, dto2}; 

現在,我的要求是我需要從它的鍵爲名稱字段和值是計數場的總和的dtoCollection創建字典。

例如,如果您將上述dtoCollection到詞典,該條目應該像

重點=「測試」,值=「5」

,其中從相加得到的值了計數領域,其名稱字段相同

回答

12

我想這會做你需要的東西:

dtoCollection.GroupBy(x => x.Name).ToDictionary(x => x.Key, x => x.Sum(y => y.Count)) 
+2

我的想法完全吻合。不要忘記包含'System.Linq'! –

+0

完美答案。謝謝!!! – Rockstart

1

以下是LINQ查詢

var dict = dtoCollection.GroupBy(x=>x.Name).ToDictionary(x=>x.Key, x=>x.Select(y=>y.Count).Sum());