アイテムのシーケンスに重複があるかどうかを見つけるための優れた効率的な拡張方法を持っている人はいますか?
拡張メソッドを導入できると思いreturn subjects.Distinct().Count() == subjects.Count()
ますが、もっと良い方法があるはずだと感じています。この方法では、要素を2回カウントし、すべての離れた要素を分類する必要があります。より良い実装は、最初に見つかった重複に対してtrueを返す必要があります。何か良い提案はありますか?
アウトラインは次のようになると思います。
public static bool HasDuplicates<T>(this IEnumerable<T> subjects)
{
return subjects.HasDuplicates(EqualityComparer<T>.Default);
}
public static bool HasDuplicates<T>(this IEnumerable<T> subjects, IEqualityComparer<T> comparer)
{
...
}
しかし、それをどのようにスマートに実装するかはよくわかりません...