が、私はそうのように、人の名前を持っているそれぞれのオブジェクトのフラットなリストと、彼らがしている、単一の役割を考えてみましょう:今すぐこれを行うには、より良い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>>
(明らかに)。私は以下のように2つのステップでそれを行いましたが、より直接的な方法があると考える必要があります。
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)配列にします。 –
はい、人は複数の役割を持つことができます –