list 对象排重

来源:互联网 发布:淘宝lolita鞋子 编辑:程序博客网 时间:2024/05/17 21:40
  class ListDistinctDemo    {        static void Main(string[] args)        {            List<Person> personList = new List<Person>(){                new Person(3),//重复数据                new Person(3),                new Person(2),                new Person(1)            };            //使用匿名方法            List<Person> delegateList = personList.Distinct(new Compare<Person>(                delegate(Person x, Person y)                {                    if (null == x || null == y) return false;                    return x.ID == y.ID;                })).ToList();            delegateList.ForEach(s => Console.WriteLine(s.ID));            //使用 Lambda 表达式            List<Person> lambdaList = personList.Distinct(new Compare<Person>(                (x, y) => (null != x && null != y) && (x.ID == y.ID))).ToList();            lambdaList.ForEach(s => Console.WriteLine(s.ID));            //排序            personList.Sort((x, y) => x.ID.CompareTo(y.ID));            personList.ForEach(s => Console.WriteLine(s.ID));        }    }    public class Person    {        public int ID { get; set; }        public string Name { get; set; }                public Person(int id)        {            this.ID = id;        }    }    public delegate bool EqualsComparer<T>(T x, T y);    public class Compare<T> : IEqualityComparer<T>    {        private EqualsComparer<T> _equalsComparer;        public Compare(EqualsComparer<T> equalsComparer)        {            this._equalsComparer = equalsComparer;        }        public bool Equals(T x, T y)        {            if (null != this._equalsComparer)                return this._equalsComparer(x, y);            else                return false;        }        public int GetHashCode(T obj)        {            return obj.ToString().GetHashCode();        }    }

0 0
原创粉丝点击