public class PosSaleReportDataShopComparer: IEqualityComparer<PosSaleReportData>
{
private double dayDiff=365;
public PosSaleReportDataShopComparer(double day)
{
dayDiff = day;
}
public bool Equals(PosSaleReportData x, PosSaleReportData y)
{
try
{
var result1 = x.ShoppeCode == y.ShoppeCode;
var second = Math.Abs((x.JzDate - y.JzDate.AddDays(dayDiff)).TotalSeconds);
var result2 = Math.Abs((x.JzDate - y.JzDate.AddDays(dayDiff)).TotalSeconds) < 1|| Math.Abs((y.JzDate - x.JzDate.AddDays(dayDiff)).TotalSeconds) < 1;
if(result1&&result2)
{
if(x.JzDate>y.JzDate)
{
x.LSsTotal = y.SsTotal;
x.Area = y.Area;
x.AreaAverage = y.AreaAverage;
}
else
{
y.LSsTotal = x.SsTotal;
y.LArea = x.Area;
y.LAreaAverage = x.AreaAverage;
}
}
return result1&&result2;
}
catch (Exception ex)
{
return base.Equals(x);
}
}
public int GetHashCode(PosSaleReportData obj)
{
return obj.ShoppeCode.GetHashCode();
}
}
写一个继承IEqualityComparer接口的类PosSaleReportDataShopComparer,然后再调用Intersect方法时传入该类: list1.Intersect(list2, new PosSaleReportDataShopComparer()).ToList()