重複する値の IEnumerable オブジェクトをフィルタリングしようとしているので、そこから個別の値を取得したいと思います。たとえば、それが何日も保持されているとしましょう。
月曜日 火曜日 水曜日 水曜日
私はそれをフィルタリングして返したい:
月曜、火曜、水曜
.net 2.0 でこれを行う最も効率的な方法は何ですか?
重複する値の IEnumerable オブジェクトをフィルタリングしようとしているので、そこから個別の値を取得したいと思います。たとえば、それが何日も保持されているとしましょう。
月曜日 火曜日 水曜日 水曜日
私はそれをフィルタリングして返したい:
月曜、火曜、水曜
.net 2.0 でこれを行う最も効率的な方法は何ですか?
Dictionary<object, object> list = new Dictionary<object, object>();
foreach (object o in enumerable)
if (!list.ContainsKey(o))
{
// Do the actual work.
list[o] = null;
}
ディクショナリはハッシュ テーブルを使用してキーを保持するため、ルックアップは効率的です。
並べ替えはせいぜい O(n log(n)) です。効率的なハッシュ関数を持つハッシュ テーブルは、多くの場合、それよりも優れています (O(1) ルックアップ)。
別の IEnumerable を作成します。原稿を並べます。元のアイテムごとに、新しいアイテムに古いアイテムが含まれていない場合は追加します。
もう 1 つの方法は、HashSet<T> を使用することです。HashSet では、重複する項目を使用できず、キーと値のペアを必要としません。