как сравнить элементы одного массива между собой
Другие ответы правильно решают вашу проблему обнаружения, если есть какие-либо повторяющиеся записи, использующие GroupBy . Однако, если вы намереваетесь заменить эти дублирующиеся записи на новую несуществующую запись в массиве, вы можете использовать методы ниже:
Этот код гарантирует, что массив elements всегда будет иметь уникальные значения.
Примечание. — Цикл do. while продолжает генерировать случайные числа, если он не находит уникальное число. Поэтому, если размер вашего массива больше, чем диапазон генерируемых случайных чисел, вы застрянете в бесконечном цикле.
Используя силу linq, вы можете использовать GroupBy для поиска дубликатов.
Кроме того, Enumerable.Range — это быстрый способ создания списков.
Если вам нужно обработать дубликаты, вы можете повторить их и использовать .Key
Самый простой способ сравнить массивы в C#
В Java, массивы.equals () позволяет легко сравнивать содержимое двух базовых массивов (перегрузки доступны для всех основных типов).
есть ли такая вещь в C#? Есть ли «волшебный» способ сравнения содержимого двух массивов в C#?
11 ответов
можно использовать SequenceEqual. Это работает для любого IEnumerable<T> , а не просто массивы.
используйте SequenceEqual в LINQ.
также для массивов (и кортежей) вы можете использовать новые интерфейсы из .NET 4.0: IStructuralComparable и IStructuralEquatable. Используя их, вы можете не только проверить равенство массивов, но и сравнить их.
на .Net версии 4.0 и выше, вы можете сравнивать элементы в массиве или кортежей с помощью структурные сравнения тип:
SequenceEqual вернет true, только если выполнены два условия или выполнены.
- они содержат те же элементы.
- элементы в том же порядке.
если вы хотите проверить, содержат ли они одни и те же элементы независимо от их порядка, и ваша проблема имеет тип
содержит ли values2 все значения, содержащиеся в values1?
вы можете использовать метод расширения LINQ Enumerable.Except и затем проверить, если результат имеет любое значение. Вот пример
а также с помощью этого вы получаете различные элементы, а также автоматически. Двух зайцев одним выстрелом.
имейте в виду, если вы выполняете свой код так
вы получите разные результаты.
в моем случае у меня есть локальная копия массива и я хочу проверить, было ли что-то удалено из исходного массива, поэтому я использую этот метод.
для модульных тестов, вы можете использовать CollectionAssert.AreEqual вместо Assert.AreEqual .
это, вероятно, самый простой способ.
поэлементно сравнивать ? как насчет
замените условие (a==b) на все, что вы хотите сравнить в a и b.
Я сделал это в visual studios, и он работал отлично; сравнение индекса массивов по индексу с коротким этим кодом.
выход будет; соответствующие номера 7 Номера не совпадающие 3
для некоторых приложений может быть лучше:
Если вы хотите обработать null входы изящно, и игнорировать порядок элементов, попробуйте следующее решение:
Как сравнить элемент массива с элементами заданного массива?
Тебе нужно два цикла, первый — идет по массиву символов, второй — по массиву строки, в зависимости от того какая у тебя строка — вместо 7 ставь либо n (если строка из n символов) или другое число, если оно заранее известно.
![]()
Если ваш s — это std::string , то ответ на вопрос дается простым
А если вы оформите ваш cif в виде нуль-терминированной строки
то можно будет записать и чуть короче
![]()
Всё ещё ищете ответ? Посмотрите другие вопросы с метками c++ или задайте свой вопрос.
Site design / logo © 2022 Stack Exchange Inc; user contributions licensed under cc by-sa. rev 2022.6.10.42345
Нажимая «Принять все файлы cookie», вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.