簡體   English   中英

從通用列表中刪除重復項

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM