0
List<Foo> fooList = new List<Foo>();

fooList.Add(new Foo(){
    Id = 1,
    Bar = 1,
    Blah = 1
});

fooList.Add(new Foo(){
    Id = 1,
    Bar = 2,
    Blah = 1
});

fooList.Add(new Foo(){
    Id = 2,
    Bar = 1,
    Blah = 2
});

プロパティでグループfooList化すると、グループごとに、Idを除くすべてのプロパティが等しくなります。ラムダメソッドBarがあることに気づきましたが、リストをでグループ化し、プロパティを各IDのすべてのリストにする方法はありますか?GroupMyIdBarBar

現在、各行に多くの冗長データがあるためです。問題を詳しく説明してほしい場合はお知らせください。

4

1 に答える 1

2

要素セレクターを決定できるGroupBy拡張機能を使用します。

var query = fooList.GroupBy(f => f.Id, f => f.Bar);

// Iterate over each grouping in the collection. 
foreach (var group in query)
{
    // Print the key value.
    Console.WriteLine(group.Key);
    // Iterate over each value in the  
    // grouping and print the value. 
    foreach (int bar in group)
        Console.WriteLine("  {0}", bar);
}

Barまたは、明示的なプロパティになりたい場合:

var query = fooList.GroupBy(
    f => f.Id, 
    (id, foos) => new {Id = id, Bars = foos.Select(f=>f.Bar)});

少し読みにくいと思いますが。

于 2012-12-11T15:48:46.490 に答える