Suppose you have two C# lists sales and salesbackup, and you want to get a new list that shows records that exist in both.
These lists were created by reading data from csv files using Csvhelper.
How come this doesnt work?
foreach (var sale in sales)
{
if (salesBackup.Contains(sale))
dups.Add(sale);
}
Neither this..
var dups = sales.Where(x => salesBackup.Contains(x));
Yet this does work ..
foreach (var sale in sales)
{
foreach (var saleBackup in salesBackup)
{
if (saleBackup.FirstName == sale.FirstName &&
saleBackup.LastName == sale.LastName &&
saleBackup.City == sale.City &&
saleBackup.Item == sale.Item &&
saleBackup.Quantity == sale.Quantity &&
saleBackup.Date == sale.Date &&
saleBackup.ItemPrice == sale.ItemPrice)
dups.Add(saleBackup);
}
}
The last solution is pretty clunky.. :( I think Contains uses reference equality so it doesnt work despite the values being the same on all the fields.