例如       List<OrderDetailResult> oldList = new List<OrderDetailResult>();
                    OrderDetailResult result1 = new OrderDetailResult();
                    result1.SKU = "EXP001";
                    result1.Quantity = 5;
                    result1.SalesPrice = 3;
                    OrderDetailResult result2 = new OrderDetailResult();
                    result2.SKU = "EXP002";
                    result2.Quantity = 10;
                    result2.SalesPrice = 2;
                    oldList.Add(result1);
                    oldList.Add(result2);                    List<OrderDetailResult> newList = new List<OrderDetailResult>();
                    OrderDetailResult result3 = new OrderDetailResult();
                    result3.SKU = "EXP001";
                    result3.Quantity = 5;
                    result2.SalesPrice = 3;
                    OrderDetailResult result4 = new OrderDetailResult();
                    result4.SKU = "EXP002";
                    result4.Quantity = 5;
                    result4.SalesPrice = 4;
                    newList.Add(result3);
                    newList.Add(result4);
上面有二个集合,我要判断这二个里面 每个对象的其中二个属性 SKU,及Quantity   还有一个单价属性不需要判断
,我用最笨的方法循环第一个list 查出 list[0] 里面的SKU,及 Quantity去新的进行对比,看看是否不一致则表示修改过,
但这种方法很笨,有没有直接比较对象的方法,然后我给要比较的对象的属性赋需要比较的值。
请高手指教

解决方案 »

  1.   

    好像有这样的一个接口IEqualityComparer   但是实现这接口里面 如果要比较多个属性 的值是否相等该如何写呢?
      

  2.   

    不知道你要什么效果,如果你想看起来简洁点,那就重写OrderDetailResult中的等于方法
    而这个IEqualityComparer 
    class BoxEqualityComparer : IEqualityComparer<Box>
    {    public bool Equals(Box b1, Box b2)
        {
            if (b1.Height == b2.Height & b1.Length == b2.Length
                                & b1.Width == b2.Width)
            {
                return true;
            }
            else
            {
                return false;
            }
        }
        public int GetHashCode(Box bx)
        {
            int hCode = bx.Height ^ bx.Length ^ bx.Width;
            return hCode.GetHashCode();
        }}
      

  3.   


    回楼上的我的意思你已经明白了,但是有个问题
    int hCode = bx.Height ^ bx.Length ^ bx.Width;
    这一句的时候,因为后面三个属性类型是不确定的有的是int ,而有的是string  所以应该如何写呢?
      

  4.   

    回楼上的我改成这样就可以了        public int GetHashCode(OrderDetailResult obj)
            {
                object o = obj.Quantity;
                o = obj.SKU;
                return o.GetHashCode();
            }
    但是目前这个只实现了对象比较,我现在是比较集合里面的对象,难道一定要循环调用上面的方法吗