Non-LINQ, когда ваша коллекция реализует ICollection<T>
или ICollection
:
bool allItemsUnique =
new HashSet<YourType>(yourCollection).Count == yourCollection.Count;
Non-LINQ, когда ваша коллекция не реализует ICollection<T>
или ICollection
.(Эта версия имеет немного лучшую теоретическую производительность, чем первая, потому что она выйдет из строя сразу после обнаружения дубликата.)
bool allItemsUnique = true;
var tempSet = new HashSet<YourType>();
foreach (YourType obj in yourCollection)
{
if (!tempSet.Add(obj))
{
allItemsUnique = false;
break;
}
}
LINQ.(Лучшая производительность этой версии - когда ваша коллекция реализует ICollection<T>
или ICollection
- будет примерно такой же, как и у первого решения, не относящегося к LINQ. Если ваша коллекция не реализует ICollection<T>
или ICollection
, тогдаВерсия LINQ будет менее эффективной.)
bool allItemsUnique =
yourCollection.Distinct().Count() == yourCollection.Count();