Вручную :
Этот метод определяет равенство с помощью средства сравнения по умолчанию, как это определено реализацией объекта метода IEquatable.Equals для T (тип значенийв списке).
Следующий код показывает, почему ваш код не работает:
var list1 = new List<int> { 0, 1 };
var list2 = new List<int> { 0, 1 };
Console.WriteLine(list1.Equals(list2)); // prints false
List<T>
сам по себе не реализует Equals
, поэтому он сравнивает с помощьюobject.Equals
, который проверяет равенство ссылок, которые не совпадают в вышеприведенном и вашем случае.
Например, вы можете создать собственную реализацию, которая расширяет List<List<int>>
и переопределить метод Equals
.