Нужно ли упорядочивать списки для правильной работы функции list.SequenceEqual()?

-7

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

спросил(а) 2020-04-03T23:55:39+03:00 6 месяцев, 3 недели назад
1
Решение
70

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));
}

ответил(а) 2020-04-04T00:06:14.573019+03:00 6 месяцев, 3 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема