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