2012-04-04 4 views
3

LINQを使用して以下を達成するにはどうすればよいですか?LINQでグルーピングする

ように私は(私は唯一の簡略化のためJSONとしてそれらを書く)

{ Name: A, Domain: a, SubDomain: 1} 
{ Name: B, Domain: a, SubDomain: 2} 
{ Name: C, Domain: b, SubDomain: 1} 
{ Name: D, Domain: b, SubDomain: 2} 
{ Name: E, Domain: c, SubDomain: 1} 

私はそれらを収集するいくつかのC#のオブジェクトを持っている:あなたはちょうどDomainによってグループ化したい

{ Domain: a ,{{Name: A, SubDomain: 1}, {Name: B, SubDomain: 2}} 
    Domain: b ,{{Name: C, SubDomain: 1}, {Name: D, SubDomain: 2}} 
    Domain: c ,{{Name: E, SubDomain: 1}} 
+5

'GroupBy(x => x.Domain)' – gdoron

+1

あなたはGoogleにしようとしていますか? [code.msdn](http://code.msdn.microsoft.com/101-LINQ-Samples-3fb9811b) – stukselbax

答えて

8

var list = GetListFromFoo(); 
var groupedList = list.GroupBy(x => x.Domain); 

それは、このLINQ方法で行った:

var groupedList = list.GroupBy(x => x.Domain, x => new 
             { 
              x.Name, 
              x.SubDomain 
             }); 
:私はあなたのコメントの権利を理解している場合、これはあなたが探しているものである

public static IEnumerable<IGrouping<TKey, TSource>> GroupBy<TSource, TKey>(
    this IEnumerable<TSource> source, Func<TSource, TKey> keySelector) 

MSDN


MSDN

+0

2つのこと:a)各キーの下にある要素は、元の型のままで、相互キーは省略しないでください。 b)キーはコレクションのメンバーではなく、JSON逐次化 –

+0

@EladBendaの後に反映されません。クラスのメンバーを紹介し、最終的なタイプをどのようにしたいのですか? – gdoron

+0

'{ドメイン:a、{{名前:A、サブドメイン:1}、{名前:B、サブドメイン:2}} ドメイン:b、{{名前:C、サブドメイン:1}、{名前:D、サブドメイン:2}} ドメイン:c、{{名前:E、サブドメイン:1}} ' –

関連する問題