2 tane ana liste var. Alt nesne, üst sınıfın bir özelliğiyle karşılaştırmak istediğim fazladan bir özelliğe sahiptir. Burada Çocuğun bir listesini ebeveynin listesine göre belirli bir değere göre karşılaştırın
örnekpublic class Parent
{
public int X { get; set; }
}
public class Child : Parent
{
public int Y { get; set; }
}
public class ClassXCompare : IEqualityComparer<Parent>
{
public bool Equals(Parent x, Parent y)
{
var child = (Child)y;
return x.X == child.Y;
}
public int GetHashCode(Parent parent)
{
int parentXhash = parent.X.GetHashCode();
// Calculate the hash code for the product.
return parentXhash ;
}
}
ve ben aşağıdakileri sınamak eğer şimdi, her zaman
var parentList= new List<Parent>
{
new Parent {X = 5},
new Parent {X = 6}
};
var childList= new List<Child>
{
new Child {Y = 5},
new Child {Y = 6}
};
var compare = new ClassXCompare();
var diff = parentList.Except(childList, compare);
Assert.IsTrue(!diff.Any()); // Fail ???
benim konu GetHashCode bulunan düşünüyorum fonksiyon
Herhangi başarısız fikir bu nasıl çözülür?
GetHashCode hem öğeler için aynı değeri döndürür keşke sadece adı verilecek Seti/Dictionary
'y' her zaman bir 'Child' içinde 'var child = (Child) y;'? Ve her durumda, lütfen, "her zaman başarısız" (istisna, yanlış sonuç ...) ile tam olarak ne demek istediğini açıklığa kavuşturun. –
Evet y her zaman bir çocuk, istisna yoktur, ** var diff = parentList.Except (childList, karşılaştırın); ** boş dönmelidir, ancak – Maro