创建一个以GroupBy和Sum为键/值的字典
本文关键字:字典 为键 Sum 一个以 GroupBy 创建 | 更新日期: 2023-09-27 18:08:21
我有Message类,如
public class Message
{
public int Id {get;set;}
public string Name {get;set;}
public ICollection<MessageProperty> Properties {get;set;}
}
public class MessageProperty
{
public string Key {get;set;}
public string Value {get;set;}
}
我想要一个具有密钥为"语言"的Dictionary<string, int>
,以及语言匹配的所有消息之和的值。
最后是Key:"en-GB", Value:123
我目前有一个IEnumerable<Message>
工作与得到的信息。
我知道我必须做GroupBy和Sum,但我尝试过的所有方法都不太奏效。
你能告诉我怎么买这本字典吗?由于UPDATE:我的Enumerable中的每个Message都想要
{
"id":1,
"name":"test",
"properties":[
{
"Key":"language",
"Value":"en-gb"
},
{
"Key":"gender",
"Value":"male"
},
{
"Key":"klout",
"Value":10
}
]
}
这将从所有消息中选择所有属性,然后根据键创建一个字典,并计算每个键出现的次数
messages.SelectMany(message => message.Properties)
.Where(prop => prop.Key == "language")
.GroupBy(prop => prop.Value)
.ToDictionary(grp => grp.Key,
grp => grp.Count());