比较2个列表

时间:2017-12-11 14:56:35

标签: c# list compare

在其他一些问题中,我发现了有关如何比较两个对象列表的信息,并且在列表中的对象不同的意义上获得了差异。 我不确定在两个列表中有相同对象的情况下是否可以使用相同/类似的东西,但两个列表中的特定对象可能具有不同的属性值。

是否有检查该案例的快捷方式?

1 个答案:

答案 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);