[英]Removing duplicates from generic list
我定義了一個對象,為其創建了一個IEqualityComparer類,並按如下方式使用它:
someList.Distinct(new DistinctComparer());
我以為這可以,但是我錯了。 比較器對象在Equals方法中指定對象的11個屬性。 我意識到刪除的重復項是隨機的。
我希望根據日期刪除其他屬性。 因此,對於在11個屬性中具有重復項的對象,我想保留具有最新日期的對象,該對象的屬性未包含在Equals方法中。
如果重要,則對象是USPS定義的美國地址。 等於方法:
public bool Equals(Address x, Address y)
{
return x.HouseNo == y.HouseNo &&
x.PreDir == y.PreDir &&
x.StreetName == y.StreetName &&
x.StreetSuffix == y.StreetSuffix &&
x.PostDir == y.PostDir &&
x.City == y.City &&
x.State == y.State &&
x.Zip5 == y.Zip5 &&
x.Zip4 == y.Zip4 &&
x.Sud == y.Sud &&
x.UnitNum == y.UnitNum;
}
我不知道如何保留最近銷售日期的地址。 有什么線索嗎? 謝謝
因此,對於在11個屬性中具有重復項的對象,我想保留具有最新日期的對象,該對象的屬性未包含在Equals方法中。
實際上, Distinct
將保留(或更確切地說,屈服)任何相等值中的第一個 。 因此,您可以先按相反的日期排序:
var results = someList.OrderByDescending(x => x.Date)
.Distinct(new CustomComparerWhichIgnoresDate());
這種行為無法得到保證,但是看到它改變我會感到震驚-這是最簡單,最明顯的方法。 (有關更多詳細信息,請參見我的Edulinq帖子 。)您是否願意依靠未記錄的行為取決於您-LINQ to Objects中有很多未記錄的東西,但是我會很高興有信心依靠。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.