5

C# でオブジェクトの一意のリストを構築するために、あるパターンに従う方が速いかどうか疑問に思っています。

オプション1

  • すべての項目を汎用リストに追加します
  • その上でlist.Distinct関数を呼び出します

オプション 2

  • 各アイテムを反復する
  • アイテムがリストに既に存在するかどうかを確認し、存在しない場合は追加します
4

3 に答える 3

18

あなたが使用することができますHashSet<T>

HashSetクラスは、高性能のセット操作を提供します。セットは、重複する要素を含まず、要素の順序が特定されていないコレクションです。

IEqualityComparer<T>コンストラクターを介してカスタムを提供できます。

于 2012-12-07T17:13:07.173 に答える
3

これは、「木に釘を打ち込むのに靴とレンガのどちらを使用すべきか」という質問の 1 つです。「オブジェクトの一意のリストを構築する」という要件に基づいて、HashSet<T>クラスが満たすジョブに適切なデータ構造を使用する必要があります。

リスト形式のアイテムが必要な場合は、いつでもToList()セットを呼び出すことができます。

于 2012-12-07T17:16:52.250 に答える
0

ユニークなアイテムを検索するパフォーマンスが心配な場合は、を使用してDictionary<TKey, TVale>ください。また、辞書には一意のキーが必要なため、重複することはありません。

于 2012-12-07T17:11:46.027 に答える