1

タイプのクラスがある場合

class Info
{
    public Info(string first, string last) { this.First = first; this.Last = last; }
    string First { get; private set; }
    string Last { get; private set; }
}

そして例えばリスト:

var list = new List<Info>();
list.Add(new Info("jon", "doe");
list.Add(new Info("jane", "doe");
list.Add(new Info("bason", "borne");
list.Add(new Info("billy", "nomates");

そして、名のリストを使用して、姓のソートされたリストにマップしたいと思います。つまりDictionary<string,List<string>>、キーは姓のプロパティであり、リストは名のプロパティのリストです。

上記の例では、取得したいと思います{ "doe" => { "jon", "jane" }, "borne" => { "jason" }, "nomates" => { "billy" } }

これをLinqできちんと行うことは可能ですか?もしそうなら、どうすればいいですか?

4

2 に答える 2

1

これを行うにはGroupBy、 とを使用できます。ToDictionary

まず、クラスのプロパティを公開してから、次のコードを使用します。

Dictionary<string, List<string>> names = list
    .GroupBy(x => x.Last)
    .ToDictionary(x => x.Key, x => x.Select(y => y.First).ToList());
于 2013-05-18T19:04:33.360 に答える