2011-10-29 8 views
1

(みかんグループではなく、異なるように)整理するためにかなり大きなIList<foo>fooは次のようになります。ここでLINQの式は、のは、私が持っているとしましょう

public class foo 
{ 
    public string Region { get; set; } 
    public string Territory { get; set; } 
    public string Location { get; set; } 
    public string Person { get; set; } 
} 

...方法が合理的に速いを使用して、/効率的な存在でありますこれらのfooアイテムをRegionで「グループ化」すると、IDictionary<string, IList<foo>>になり、stringというキーがRegionというプロパティになり、各下位のIList<foo>にはその地域に一致するfooレコードのみが含まれます。 (それはIDictionaryである必要はありません。これは、私がしようとしていることの要点を説明するためです)私はMVCビューにインタラクティブなリストを提示したいのですが、サードパーティのライブラリを使用することもできます。

+0

Hmm。多分私はGroupByがSQL Group Byのようなものだったと仮定していました。それは私のところでは間違っているようです。さて、私はそれが答えだと思います! –

答えて

7

はい - あなたはLookupをしたい:

var lookup = list.ToLookup(x => x.Region); 

あなたグループ化して辞書を作成することができますが、個人的に私はそれが具体的に「単一のキーのために設計されていて、ルックアップを使用することを好む、複数「値」シナリオ。

+0

Hmm。優れた。 –

1
IList<Foo> foos = //whatever 
var groups = foos 
    .GroupBy(f => f.Region) 
    .ToDictionary(grp => grp.Key, grp => grp.ToList()); 
+0

HahだからGroupByだ...私は単純に、集約関数のためにSQL Serverに関連していると仮定しました。 –

1
IList<Foo> foos = //whatever 

var groups = foos.ToLookup(f => f.Region); 

ILookup<T>は辞書のようなものですが、各キー参照だけでなく1の値のリスト。

関連する問題