码迷,mamicode.com
首页 > 其他好文 > 详细

Lambda表达式去重操作

时间:2017-08-16 17:01:33      阅读:153      评论:0      收藏:0      [点我收藏+]

标签:style   count()   表达   操作   pre   var   get   序列   char   

  在项目里用lambda的Distinct方法进行对象去重操作发现返回的数据仍然还是没有去重的数据,百度搜索后发现Distinct只是将List容器中的各个对象地址进行比较来进行去重。

    public class Employee
    {
        public int ID { get; set; }
        public string Name { get; set; }
        public int Age { get; set; }
        public char Sex { get; set; }
    }

    class Program
    {
        public static void Main(string[] args)
        {
            var temp1 = new Employee()
            {
                ID = 1,
                Age = 24,
                Name = "frank",
                Sex = m
            };

            data.Add(temp1);
            data.Add(temp1);
            var datanew = data.Distinct();
     
            Console.WriteLine(datanew.Count());

            Console.ReadKey();
        }
    }

 

   这并不能达到我们将不同对象在序列化后进行对象去重的要求。

   去重主要思路:在lambda表达式GrouBy分组后只取每组第一条的数据来达到筛选唯一数据的结果,实现代码如下

    public class Employee
    {
        public int ID { get; set; }
        public string Name { get; set; }
        public int Age { get; set; }
        public char Sex { get; set; }
    }

    class Program
    {
        public static void Main(string[] args)
        {
            List<Employee> data = new List<Employee>()
            {
                new Employee()
                {
                    ID = 1,
                    Age = 22,
                    Name = "阿飞",
                    Sex = m
                },
                 new Employee()
                 {
                     ID = 1,
                     Age = 22,
                     Name = "阿飞",
                     Sex = m
                 },
                new Employee()
                {
                    ID = 2,
                    Age = 23,
                    Name = "阿飞",
                    Sex = m
                },
            };

            var datanew = data.GroupBy(e => e.ID).Select(e => e.First());

            Console.WriteLine(datanew.Count());          
            Console.ReadKey();
        }
    }

 

Lambda表达式去重操作

标签:style   count()   表达   操作   pre   var   get   序列   char   

原文地址:http://www.cnblogs.com/leeafei/p/7373571.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!