Bu makale makine çevirisi ayna makalesidir, orijinal makaleye geçmek için lütfen buraya tıklayın.

Görünüm: 24681|Yanıt: 1

[Kaynak] C# Farklı nesneleri koşullu olarak deduplicate eder

[Bağlantıyı kopyala]
Yayınlandı 17.08.2018 10:56:00 | | | |
Genellikle, C#'da Distinct'ı dizi deduplication için kullanırız, genel dizi tabanlı veri türleri, örneğin int, string. ayrıca nesne deduplication için de kullanılabilir, C#'ın Distinct yöntemi tanımına bir göz atalım:



Ağır bir yük var, ilk parametre eklenir, bu genişletme yöntemi, genişletme yöntemi hakkında lütfen Baidu'yu anla.
Distinct'ın nesne deduplication'unu inceleyelim, diyelim ki artık bir People sınıfımız var:




ListPeole nesnelerinden oluşan bir koleksiyon ilan ediyoruz:

ListPeople üzerinde herhangi bir parametre olmadan Distinct yöntemini kullanalım ve sonuç şu şekildedir:



Farklı yöntemin parametreleri yoksa nesne kümesinde p, p1, p2'nin deduplicate edileceği ve nesnenin aynı üye değerine sahip farklı nesneler için deduplication olmadığı görülebilir.
Şimdi bir gereksinimimiz var, aynı ID'ye sahip İnsanlar için, aynı kişi olarak sayıyoruz, kümedeki çoğaltmayan kişileri çıkarmak için (aynı ID için sadece bir tane çıktı), bu zaman ikinci yöntem olan Distinct kullanıyoruz, bu yöntem verilen parametrelerin IEqualityComparer türünde olmasını gerektirir, genel bir arayüz devralır, aşağıdaki kodu ekleriz:


IEqualityComparer arayüzünü devralarak, Equals ve GetHashCode metodlarını uygulamalısınız.
Karşılaştırdığımızda, PeopleCompareByID ile bir varlık iletebiliriz:


Koşuya çıkan sonuçlar şu şekildedir:



Kimlik ile deduplication etkisini elde ettik.
Şimdi gereksinimler tekrar değişti, ID ve eyalet aynı kişi, kişinin bilgisini çıkarmak için (aynı kişi istediği zaman bir veri çıkarabilir), bu sırada ID=0 ve Province="Hubei" tekrarlandığını görüyoruz, deduplicate etmek için başka bir sınıfımız var ya da IEqualityComparer'dan miras alıyoruz:


Benzer şekilde, Distinct yöntemi kullanılırken, PeopleCompareByIDAndProvince örneği geçer:

Koşu sonrası sonuçlar şunlardır:



İstediğimiz etkiyi elde ettik.
Bu yöntem, üç veya daha fazla nesne üyesiyle deduplication sorunu karşılaşıldığında kullanılarak nesnenin çoğaltıp çoğaltılmadığını belirlemek için kullanılabilir.
Yukarıdaki benim mütevazı görüşüm.






Önceki:MYSQL:WARN: Establishing SSL connection without server's identity verificatio...
Önümüzdeki:C# Derin Dalış - Yıkıcılar
Feragatname:
Code Farmer Network tarafından yayımlanan tüm yazılım, programlama materyalleri veya makaleler yalnızca öğrenme ve araştırma amaçları içindir; Yukarıdaki içerik ticari veya yasa dışı amaçlarla kullanılamaz, aksi takdirde kullanıcılar tüm sonuçları ödemelidir. Bu sitedeki bilgiler internetten alınmakta olup, telif hakkı anlaşmazlıklarının bu siteyle hiçbir ilgisi yoktur. Yukarıdaki içeriği indirmeden sonraki 24 saat içinde bilgisayarınızdan tamamen silmelisiniz. Programı beğendiyseniz, lütfen orijinal yazılımı destekleyin, kayıt satın alın ve daha iyi orijinal hizmetler alın. Herhangi bir ihlal olursa, lütfen bizimle e-posta yoluyla iletişime geçin.

Mail To:help@itsvse.com