C# 两个列表取交集并集差集,比较复杂对象列表


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()
posted @ 2022-09-29 15:28  龙7龙  阅读(71)  评论(0编辑  收藏  举报