folder Tahribat.com Forumları
linefolder C#, Asp.Net, .Net Core
linefolder C# 2 List<T> Karşılaştırma



C# 2 List<T> Karşılaştırma

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    buzukatak
    buzukatak's avatar
    Kayıt Tarihi: 27/Haziran/2010
    Erkek

    Bu işi ilgili sınıfı kurcalamadan halletmenin en mantıklı yolu uygun yardımcı bir comparer sınıf yazıp ilgili IEnumerable metotlarını kullanmak.

    Önce yardımcı sınıfını yaz:

    public class AddressComparer : IEqualityComparer<Address>
    {
    	public bool Equals(Address x, Address y)
    	{
    		if (x == null && y == null)
    			return true;
    
    		if (x == null || y == null)
    			return false;
    
    		return x.ID == y.ID && string.Equals(x.SourceKey, y.SourceKey);
    	}
    
    	public int GetHashCode(Address obj)
    	{
    		unchecked
    		{
    			return (obj.ID * 397) ^ (obj.SourceKey != null ? StringComparer.InvariantCulture.GetHashCode(obj.SourceKey) : 0);
    		}
    	}
    }

    Sonra da şu şekilde ilgili listelerini oluştur:

    var comparer = new AddressComparer();
    
    // her iki listede de olanlar
    List<Address> updateList = eskiListe.Intersect(yeniListe, comparer).ToList();
    
    // yalnız yeni listede olanlar
    List<Address> createList = yeniListe.Except(eskiListe, comparer).ToList();
    
    // yalnız eski listede olanlar
    List<Address> deleteList = eskiListe.Except(yeniListe, comparer).ToList();

     


    anlıyorum.
  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Mastika.
    Absolut
    Absolut's avatar
    Kayıt Tarihi: 04/Ağustos/2011
    Erkek
    buzukatak bunu yazdı

    Bu işi ilgili sınıfı kurcalamadan halletmenin en mantıklı yolu uygun yardımcı bir comparer sınıf yazıp ilgili IEnumerable metotlarını kullanmak.

    Önce yardımcı sınıfını yaz:

    public class AddressComparer : IEqualityComparer
    { public bool Equals(Address x, Address y) { if (x == null && y == null) return true; if (x == null || y == null) return false; return x.ID == y.ID && string.Equals(x.SourceKey, y.SourceKey); } public int GetHashCode(Address obj) { unchecked { return (obj.ID * 397) ^ (obj.SourceKey != null ? StringComparer.InvariantCulture.GetHashCode(obj.SourceKey) : 0); } } }

    Sonra da şu şekilde ilgili listelerini oluştur:

    var comparer = new AddressComparer();
    
    // her iki listede de olanlar
    List
    updateList = eskiListe.Intersect(yeniListe, comparer).ToList(); // yalnız yeni listede olanlar List
    createList = yeniListe.Except(eskiListe, comparer).ToList(); // yalnız eski listede olanlar List
    deleteList = eskiListe.Except(yeniListe, comparer).ToList();

     

    Aradığım şöyle bir çözümdü. Denemedim ancak uygulayıp deniycem teşekkürler


    Nice babayigitler kirayi kim odeyecek, coluk cocuk ne yiyecek derdinden dolayi dunyayi degistiremiyor.
Toplam Hit: 4051 Toplam Mesaj: 13
list karşılaştırma