我有List< DTO> 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”
通过总结名称字段相同的计数字段获取值
答案 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());