3

オブジェクトの膨大なコレクション(OfType <>()を使用して列挙可能としてキャストできます)があります。これらの各オブジェクトにはCategory、アプリケーション内の別の場所にあるリストから取得されたプロパティがあります。このコレクションは数百のアイテムのサイズに達する可能性がありますが、たとえば、可能なカテゴリの6/30のみが実際に使用される可能性があります。これらの6つのカテゴリを見つけるための最速の方法は何ですか?巨大なコレクションのサイズは、全体を繰り返し処理してすべての一意の値を返すことを思いとどまらせるので、これを達成するためのより高速な方法はありますか?

理想的には、カテゴリをにまとめますList<string>

4

2 に答える 2

2

.NET 3.5を使用している場合は、次のことを試してください。

List<string> categories = collection
    .Cast<Foo>()
    .Select(foo => foo.Category)
    .Distinct()
    .ToList();

非常に高速である必要があります。

これらのオブジェクトは元々データベースからのものだと思いますか?もしそうなら、あなたはあなたのために仕事をするようにデータベースに頼むことを望むかもしれません。その列にインデックスがある場合は、オブジェクトをメモリにフェッチしなくても、ほぼ瞬時に結果を取得できます。

于 2010-04-29T14:38:33.493 に答える
0

巨大なコレクションのサイズは、全体を繰り返し処理してすべての一意の値を返すことを思いとどまらせます

使用されているすべてのカテゴリを見つけるには、各アイテムを1回確認する必要があるため、繰り返しを避けることはできません(コレクションの作成中に使用されているカテゴリを追跡しない限り)。

Mark Byersソリューションが十分に高速であるかどうかを試してみてください。そうでない場合にのみ、パフォーマンスについて心配してください。

于 2010-04-29T14:40:11.070 に答える