У меня есть List<T>
объект:Получение различных значений по двум полям
List<MyCampaignClass> campaignsToProcess = new List<MyCampaignClass>();
я сделать некоторую фильтрацию восходящего потока данных через LINQ
.
var results= from h in campaignHistory
join a in campaignAvailability
on new { h.campaignId, h.reportDate } equals new { a.campaignId, a.reportDate }
where h.operationDate >= a.startDate
select h;
Затем я добавляю его в свой текущий объект List<T>
. Я хочу различать два значения в объявленном классе: MyCampaignClass.campaignId
и MyCampaignClass.reportDate
.
results.Select(m =>
new MyCampaignClass()
{
campaignId = m.campaignId,
reportDate = m.reportDate
})
.Distinct() //doesn't work
.ToList()
.ForEach(p => campaignsToProcess.Add(p));
Я не могу обернуть мою голову вокруг, почему .Distinct()
не работает.
Что вы подразумеваете под 'is not working.' –
Что добавляется в мой список в строке' .ForEach (p => campaignToProcess.Add (p)) '. Я получаю дубликаты. – Kyle
'Distinct' полагается на объекты в вашей коллекции, переопределяя' Equals' и 'GetHashCode', если они этого не делают, тогда он будет использовать ссылочное равенство и, вероятно, все будет« отличным ». Существует перегрузка, которая принимает 'IEqualityComparer', который вы можете использовать. –
juharr