将 List<T> 转换为带有策略的 Dictionary

4
我有一个List,其中DTO类如下所示,
 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转换为字典,则条目应如下所示:
Key =“test”,Value =“5”
其中Value是通过对具有相同Name字段的Count字段进行求和而获得的。
2个回答

12

我猜这会做你需要的事情:

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

2
我的想法完全一样。别忘了包含 System.Linq - René Wolferink

1
以下是linq查询。
var dict = dtoCollection.GroupBy(x=>x.Name).ToDictionary(x=>x.Key, x=>x.Select(y=>y.Count).Sum());

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接