1

我有消息类,例如

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,但我尝试过的所有事情都没有奏效。

你能告诉我如何得到这本词典吗?谢谢

更新:我的 Enumerable 中的每条消息都希望

{
   "id":1,
   "name":"test",
   "properties":[
      {
         "Key":"language",
         "Value":"en-gb"
      },
      {
         "Key":"gender",
         "Value":"male"
      },
      {
         "Key":"klout",
         "Value":10
      }
   ]
}
4

1 回答 1

3

这将从所有消息中选择所有属性,然后根据键创建字典并计算每个键出现的次数

messages.SelectMany(message => message.Properties)
        .Where(prop => prop.Key == "language")
        .GroupBy(prop => prop.Value)
        .ToDictionary(grp => grp.Key,
                      grp => grp.Count());
于 2013-04-10T12:01:51.473 回答