在其他一些问题中,我发现了有关如何比较两个对象列表的信息,并且在列表中的对象不同的意义上获得了差异。 我不确定在两个列表中有相同对象的情况下是否可以使用相同/类似的东西,但两个列表中的特定对象可能具有不同的属性值。
是否有检查该案例的快捷方式?
答案 0 :(得分:1)
我认为您想要的内容在this page:
中有所描述示例(从上面链接的MSDN网站复制以保留StackOverflow上的答案):
// This class defines your objects with your properties.
public class ProductA
{
public string Name { get; set; }
public int Code { get; set; }
}
// This class is used for custom comparison.
public class ProductComparer : IEqualityComparer<ProductA>
{
public bool Equals(ProductA x, ProductA y)
{
//Check whether the objects are the same object.
if (Object.ReferenceEquals(x, y)) return true;
//Check whether the products' properties are equal.
return x != null && y != null && x.Code.Equals(y.Code) && x.Name.Equals(y.Name);
}
public int GetHashCode(ProductA obj)
{
int hashProductName = obj.Name == null ? 0 : obj.Name.GetHashCode();
int hashProductCode = obj.Code.GetHashCode();
return hashProductName ^ hashProductCode;
}
}
以下是您现在可以使用的方法:
ProductA[] fruits1 = { new ProductA { Name = "apple", Code = 9 },
new ProductA { Name = "orange", Code = 4 },
new ProductA { Name = "lemon", Code = 12 } };
ProductA[] fruits2 = { new ProductA { Name = "apple", Code = 9 } };
// Get all the elements from the first array except for the elements from the second array.
IEnumerable<ProductA> except = fruits1.Except(fruits2);