У меня возникли проблемы с получением разницы между двумя списками в C#.C# разница между списком классов
Как я могу получить разницу? Я попытался Исключить, но я не получил результат, которого я хотел.
, например: Эти продукты являются частью законопроекта
class Product {
public int id_prod;
public int quantity;
public float price;
}
Product prd1 = new Product(){1,2,34};
Product prd2 = new Product(){2,5,20};
Product prd3 = new Product(){3,6,14};
Product prd4 = new Product(){4,9,8};
Product prd5 = new Product(){5,12,70};
Product prd1b = new Product(){1,60,34};
List<Product> oldLst = new List<Product>(){ prd1,prd2,prd3};
List<Product> newLst = new List<Product>(){ prd1b,prd2,prd4,prd5};
Заметим, что величина может изменяться между старым prd1 и новым prd1
Моя проблема, когда я использую Var lstToDel = oldLst.Except(newLst);
lstToDel заполнен oldLst и не имеет значения.
Желаемый результат будет то, что
lstToDel = new List<Product>(){prd1,prd3};
Ваш класс не переопределяет 'Equals' +' GetHashCode', поэтому сравниваются только ссылки. –
Как установить равные для проверки идентификатора и количества? – Biscuit
Ваш код будет намного понятнее, если вы не повторно использовали имя 'prd1' и выразили все это как [mcve]. На данный момент мы не знаем, каков фактический результат, или как вы это определяете. Я не думаю, что это на самом деле дубликат другого вопроса, поскольку на данный момент это похоже на то, что вы на самом деле * хотите * ссылочного равенства на данный момент, но без примера точно, что происходит, это трудно помочь. –