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()标签:return,并集,Area,C#,PosSaleReportDataShopComparer,列表,dayDiff,public,JzDate From: https://www.cnblogs.com/long7long/p/16741750.html