Я согласен с Крисом, что
Но если у вас есть DATE1, как Oct1, Date2 как Oct6, Date3 как Oct12. Date1 == Date2 и Date2 == Date3, но Date1! = Date3 - странное поведение, а цель Equals - не то, что вы должны использовать.
Я действительно не знаю, если вы разрабатываете что-то новое, и если у вас есть база данных, содержащая ваши претензии к транспортному средству, но я бы связал претензии в базе данных как родительские отношения с дочерью. Что вы должны спросить себя: возможно ли, что 2 заявки на автомобиль в пределах вашего диапазона дат могут быть разными? Есть ли другое свойство, которое вы можете использовать для идентификации претензии как уникального?
Может быть, вы могли бы решить вашу проблему так:
Имея собственность
List<VehicleClaim> RelatedClaims
в вашем объекте VehicleClaim.
Вместо Равных, использовать функцию
bool IsRelated(VehicleClaim vehiculeClaim)
{
if(all properties except date are equals)
{
// since claims are sorted by date, we could compare only with the last element
foreach(var c in RelatedClaims){
if (IsDateRangeMatching(this.ClaimDate, c.ClaimDate))
return true;
}
}
return false;
}
и добавить код, чтобы построить ваш объект
List<VehiculeClaim> yourListWithDuplicatesSortedByDate;
List<VehiculeClaim> noDuplicateList = new List<VehiculeClaim>();
foreach(var cwd in yourListWithDuplicatesSortedByDate)
{
var relatedFound = noDuplicateList.FirstOrDefault(e => e.IsRelated(cwd));
if (relatedFound != null)
relatedFound.RelatedClaims.Add(cwd);
else
noDuplicateList.Add(cwd);
}
Проблема с этим, ваши претензии должны быть отсортированы по дате, и это не может быть наиболее эффективный способ добиться этого.
Я бы исключил дату из хэша. –
Это не даст мне неточные результаты? – davy
Можете ли вы уточнить? Вы хотите, чтобы объекты VehicleClaim имели все свойства, за исключением дат того же самого, и даты в пределах 7 дней имели одинаковый хеш? – ElDog