可以說我有對象的平面列表,每個都有一個人的名字,他們是一個單一的角色,就像這樣:有沒有更好的LINQ查詢來做到這一點?
var People = new[] {
new PersonRole(){ Name = "Adam", Role = "R1" },
new PersonRole(){ Name = "Adam", Role = "R2" },
new PersonRole(){ Name = "Adam", Role = "R3" },
new PersonRole(){ Name = "Bob", Role = "R1" },
};
現在,有一個直接的方式進入這個一個基於名稱和角色(顯然)的Dictionary<string, List<string>>
。我分兩步做,如下圖,但我必須認爲有一個更直接的方法。
Dictionary<string, List<string>> resultLookup =
People.Select(p => p.Name).Distinct().ToDictionary(str => str, str => new List<string>());
People.ForEach(p => resultLookup[p.Name].Add(p.Role));
謝謝!
你選擇使用詞典<字符串,列表>,因爲一個人可以有多個角色?我會認爲只是Dictionary 會更好。或者將Role屬性作爲Role(s)數組。 –
是的,一個人可以有多個角色 –