0

次のようなオブジェクトのリスト(現在は9要素)を作成するlinqがあります。

Object 1:   Title: Title1
            Value: Marco

Object 2:   Title: Title2
            Value: Paolo

Object 3:   Title: Title3
            Value: Giovanni

Object 4:   Title: Title1
            Value: Edoardo

Object 5:   Title: Title2
            Value: Chris

Object 6:   Title: Title3
            Value: John

Object 7:   Title: Title1
            Value: Manuel

Object 8:   Title: Title2
            Value: Lorenz

Object 9:   Title: Title3
            Value: Ernest

この 9 つのオブジェクトの代わりに、各オブジェクトの値として各グループ化の各値のユニオン リストを持ち、3 つのオブジェクト (タイトルでグループ化) のみを返したいと思います。したがって、結果は次のようになります。

Object 1:   Title: Title1
            Value[]: Marco, Edoardo, Manuel

Object 2:   Title: Title2
            Value[]: Paolo, Chris, Lorenz

Object 3:   Title: Title3
            Value[]: Giovanni, John, Ernest

Linqで可能ですか?または、リストを反復して手動で管理する必要がありますか?

PS これは単なる例です。私のシナリオでは、オブジェクトごとに、タイトルと値よりも多くの要素 (10 要素など) があります。

4

1 に答える 1

4
var query = objects.GroupBy(o => o.Title)
                   .Select(g => new  
                   {
                       Title = g.Key,
                       Value = g.Select(x => x.Value).ToArray()
                   });

またはクエリ構文を使用:

var query = from o in objects
            group o by o.Title into g
            select new 
                   {
                       Title = g.Key,
                       Value = g.Select(x => x.Value).ToArray()
                   });

更新単純なグループ化の使用を検討してください - これにより、タイトルでグループ化されたオブジェクトが返されます

var query = objects.GroupBy(o => o.Title);
于 2012-12-07T10:13:00.410 に答える