Чтобы разрешить короткое замыкание, если дубликат существует в начале списка, вы можете добавить HashSet<T>
и проверить возвращаемое значение его метода .Add
.
Используя .Any
, вы можете замкнуть счетчик, как только найдете дубликат.
Вот метод расширения LINQ в C # и VB:
CSharp:
public static bool ContainsDuplicates<T>(this IEnumerable<T> enumerable)
{
var knownKeys = new HashSet<T>();
return enumerable.Any(item => !knownKeys.Add(item));
}
Visual Basic:
<Extension>
Public Function ContainsDuplicates(Of T)(ByVal enumerable As IEnumerable(Of T)) As Boolean
Dim knownKeys As New HashSet(Of T)
Return enumerable.Any(Function(item) Not knownKeys.Add(item))
End Function
Примечание : чтобы проверить, есть ли нет дубликатов, просто измените Any
на All