Нужно ли упорядочивать списки для правильной работы функции list.SequenceEqual ()? - PullRequest
0 голосов
/ 04 апреля 2019

Поскольку состояния Заголовка должны быть упорядочены списки для работы функции SequenceEqual? ​​

1 Ответ

3 голосов
/ 04 апреля 2019

SequenceEqual является расширением IEnumerable, а не только List.

Как объясняется в документации, возвращается:

true, если две исходные последовательности имеют одинаковую длину и их соответствующие элементы равны в соответствии с компаратором равенства по умолчанию для их типа; в противном случае false.

Перечисляемые значения не должны быть отсортированы для правильной работы метода, т. Е. Не для броска.

Если два списка содержат одинаковые элементы в разном порядке, он вернет false. Что именно и ожидается. Он будет работать даже в том случае, если перечислимые элементы содержат повторяющиеся значения, потому что на самом деле не имеет значения, где находятся значения, а только соответствующие значения.

Если вы хотите проверить, содержат ли два списка без дубликатов одни и те же элементы независимо от порядка, вы должны использовать HashSet и его метод SymmetricExceptWith . Если хэш-набор содержит какие-либо элементы после вызова, это означает, что списки не содержат одинаковые элементы. Например:

var set1=new HashSet<int>(someList1);
set1.SymmetricExceptWith(someList2);
if (set1.Count>0)
{
    Console.WriteLine("Not the same values! Here are the differences:");
    Console.WriteLine(String.Join(",",set1));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...