C#两个复杂对象集合的比较

        private void test() {
            List<ITT > ts = new List<ITT >();
            ts.Add(new TT("rongs",10,"zhutou"));
            ts.Add(new TT("rongrong", 10, "zhutou"));
            ts.Add(new TT("rr", 10, "zhutou"));
            ts.Add(new TT("wgr", 10, "zhutou"));

            TT t = new TT("wgr", 10, "zhutou");
            bool bc = ts.Contains (t);
            Console.WriteLine(bc);    //true
        }

 

       // 扩展该函数可对两个集合进行细致比较

       private List<ITT > FindDif(List<ITT > ts1, List<ITT > ts2) {
            List<ITT > difT = new List<ITT >();

            if (ts1== null || ts1.Count == 0) {
                return ts2;
            }


            foreach (ITT t in ts2) {
                if (!ts1.Contains(t )) {
                    difT.Add(t );
                }
            }
            return difT;
        }


        public interface ITT : IEquatable <ITT > {
            string Name { get; set; }
            string Address { get; set; }
            int Age { get; set; }
        }


        public class TT : ITT {
            public TT(string name, int age, string address) {
                this.name = name;
                this.age = age;
                this.address = address;
            }
            private string name;

            public string Name {
                get { return name; }
                set { name = value; }
            }
            private int age;

            public int Age {
                get { return age; }
                set { age = value; }
            }
            private string address;

            public string Address {
                get { return address; }
                set { address = value; }
            }

            #region IEquatable<TT> Members

            public bool Equals(ITT other) {
                return name.Equals(other.Name) && age.Equals(other.Age) && address.Equals(other.Address);
            }

            #endregion
        }

 

MSDN参考资料

List< (Of < ( T > ) > ) . . :: . Contains Method

This method determines equality using the default equality comparer EqualityComparer< (Of < ( T> ) > ) . . :: . Default for T , the type of values in the list.

 

EqualityComparer< (Of < ( T> ) > ) . . :: . Default

The Default property checks whether type T implements the System. . :: . IEquatable< (Of < ( T> ) > ) generic interface and if so returns an EqualityComparer< (Of < ( T> ) > ) that uses that implementation. Otherwise it returns an EqualityComparer< (Of < ( T> ) > ) that uses the overrides of Object. . :: . Equals and Object. . :: . GetHashCode provided by T .

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值