SequenceEqual
сравнивает две последовательности, чтобы определить, содержат ли они одинаковые объекты.В вашем случае они не.Они содержат различные ссылки Product
.
Если вы измените свой код на использование одинаковых Product
в каждом списке, то SequenceEqual
вернет `true '
var product = new Product
{
ProductId = 1,
ProductName = "TV",
ProductDescription = "Television Set"
};
product1.Add(p);
product2.Add(p);
if (product1.SequenceEqual(product2))
{
Console.WriteLine("equal data");
}
else
{
Console.WriteLine("Not equal data");
}
Почему?Поскольку в этом примере списки содержат один и тот же объект.
Прочтите это для получения дополнительной информации о том, как SequenceEqual
сравнивает две последовательности.
Если вы хотите SequenceEqual
чтобы вернуть true, если свойства класса Product
совпадают, вам необходимо переопределить метод Equals
для класса Product
.
EDIT
Как уже упоминалось, лучше применять интерфейс IEqualityComparer<T>
вместо прямого переопределения метода Equals
.