使用策略</t>将List <t>转换为Dictionary

时间:2012-11-14 11:24:43

标签: c# linq dictionary lambda

我有List&lt; DTO&gt; DTO类看起来像这样,

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

我创建对象并将其添加到List。

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

现在我的要求是我需要从dtoCollection创建一个Dictionary,其Key是 Name 字段,value是 Count 字段的总和。

例如,如果将上面的dtoCollection转换为Dictionary,则该条目应该类似于

  

Key =“test”,Value =“5”

通过总结名称字段相同的计数字段获取值

2 个答案:

答案 0 :(得分:12)

我想这会做你需要的:

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

答案 1 :(得分:1)

以下是linq查询

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