2013-04-10 66 views
1

我有消息類,如創建具有的GroupBy和點心作爲字典鍵/值

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和一個總和,但我所嘗試過的所有事情都沒有效果。

你能告訴我如何得到這本詞典嗎?由於

UPDATE:我可枚舉每個消息想

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

回答

3

這會選擇所有消息的所有屬性,然後創建一個基於密鑰的字典並計算每個鍵有多少次出現

messages.SelectMany(message => message.Properties) 
     .Where(prop => prop.Key == "language") 
     .GroupBy(prop => prop.Value) 
     .ToDictionary(grp => grp.Key, 
         grp => grp.Count()); 
+0

我需要檢查MessageProperty是否具有Key屬性值「語言」 – Jon 2013-04-10 12:03:35

+0

將示例數據添加到您的問題並給予預期行爲 – 2013-04-10 12:05:26

+0

剛剛添加,謝謝! – Jon 2013-04-10 12:12:42

相關問題