Listeden farklı bir nesneyi almak istiyorum. IEqualityComparer'ı ancak başarılı olmaksızın uygulamaya çalışıyorum. Birisi kodumu gözden geçirebilir ve IEqualityComparer hakkında biraz bilgi verebilirse lütfen. BuIEqualityComparer Uygulamasını Uygula
public class Message
{
public int x { get; set; }
public string y { get; set; }
public string z { get; set; }
public string w { get; set; }
}
public class MessageComparer : IEqualityComparer<Message>
{
public bool Equals(Message x, Message y)
{
if (Object.ReferenceEquals(x, y)) return true;
if (Object.ReferenceEquals(x, null) || Object.ReferenceEquals(y, null))
return false;
if (x.x == y.x && x.y == y.y && x.z == y.z && x.w == y.w)
{
return true;
}
return false;
}
public int GetHashCode(Message number)
{
//if (Object.ReferenceEquals(number, null)) return 0;
int hashX = number.x.GetHashCode();
int hashY = number.y == null ? 0 : number.y.GetHashCode();
int hashZ = number.z == null ? 0 : number.z.GetHashCode();
int hashW = number.w == null ? 0 : number.w.GetHashCode();
return hashX^hashY^hashZ^hashW;
}
}
Mesaj ile benim liste nesneleri:
Message m1 = new Message();
m1.x = 1;
m1.y = "A";
m1.z = "B";
m1.w = "C";
Message m2 = new Message();
m2.x = 1;
m2.y = "A";
m2.z = "B";
m2.w = "C";
Message m3 = new Message();
m3.x = 1;
m3.y = "A";
m3.z = "B";
m3.w = "C";
Message m4 = new Message();
m4.x = 2;
m4.y = "A";
m4.z = "B";
m4.w = "C";
Message m5 = new Message();
m5.x = 3;
m5.y = "W";
m5.z = "D";
m5.w = "C";
Message m6 = new Message();
m6.x = 4;
m6.y = "S";
m6.z = "F";
m6.w = "R";
List<Message> collection = new List<Message>();
collection.Add(m1);
collection.Add(m2);
collection.Add(m3);
collection.Add(m4);
collection.Add(m5);
collection.Distinct(new MessageComparer());
ben listedeki elemanların Farklı() yöntemi numarasını aramak
aynıdır Ben şu durum var. Teşekkür ederiz.
bir değişkene ayrı çağrısının sonucunu atama ya da sadece orijinal listeyi sorguluyor musunuz fazla detay bilgi için bu bağlantıyı bakın? Bir şeye atama yapmıyorsanız, yapmanız gerekir. 'Distinct()' yerine bir IEnumerable 'yerine bir güncelleme yapıyor – eouw0o83hf
Teşekkürler, haklısınız :) – kat1330