第一种去除重复方法: int count=receiverlist.Count(a => receiverlist.FindAll(b => b == a).Count > 1);

如果存在两个“2”则count返回2,如果不存在重复返回0.

 

第二种去重复方法 Distinct

    public class Product
    {
        public string Name { get; set; }
        public int Code { get; set; }
        public int ID { get; set; }
    }
    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();
        }
    }

 

static void Main(string[] args)
        {

                       Product[] products = { new Product { Name = "apple", Code = 9,ID=232 },
                                                         new Product { Name = "orange", Code = 4 ,ID=234},
                                                         new Product { Name = "apples", Code = 9 ,ID=232},
                                                         new Product { Name = "lemon", Code = 12 ,ID=234} };

 

List<Product> lambdaList = products.Distinct(new Compare<Product>(
               (x, y) => (null != x && null != y) && (x.ID == y.ID))).ToList(); //ID是你要根据哪个进行去重复,也可以code

 

            foreach (var product in lambdaList)
                Console.WriteLine(product.Name + " " + product.Code);

            Console.ReadLine();

 

        }

 

posted on 2012-07-11 14:36  Berthing  阅读(199)  评论(0)    收藏  举报