В C# существуют различные способы проверки равенства всех элементов в коллекции или массиве. В этой статье мы рассмотрим несколько методов с примерами кода для выполнения этой задачи. Независимо от того, работаете ли вы с массивами, списками или другими типами коллекций, мы поможем вам.
Методы проверки равенства всех элементов:
-
Использование метода
All:bool areAllEqual = collection.All(x => x.Equals(collection.First()));Этот метод использует метод расширения LINQ
All, чтобы проверить, равны ли все элементы в коллекции первому элементу. Он возвращаетtrue, если все элементы равны; в противном случае возвращаетсяfalse. -
Использование метода
Distinct:bool areAllEqual = collection.Distinct().Count() == 1;Здесь мы используем метод
Distinctдля удаления повторяющихся элементов из коллекции. Если полученное значение равно 1, это означает, что все элементы равны. -
Использование цикла:
bool areAllEqual = true; for (int i = 1; i < collection.Length; i++) { if (!collection[i].Equals(collection[0])) { areAllEqual = false; break; } }При таком подходе мы перебираем коллекцию и сравниваем каждый элемент с первым элементом. Если обнаруживается, что какой-либо элемент отличается, мы устанавливаем для флага
areAllEqualзначениеfalseи выходим из цикла. -
Использование метода
SequenceEqual:bool areAllEqual = collection.Skip(1).All(x => x.Equals(collection.First()));Метод
SequenceEqualсравнивает две последовательности элемент за элементом. Мы пропускаем первый элемент и проверяем, равны ли остальные элементы первому элементу. -
Использование
HashSet:bool areAllEqual = new HashSet<T>(collection).Count == 1;Создавая
HashSet, мы устраняем повторяющиеся элементы. Если счетчик HashSet равен 1, это означает, что все элементы равны.