C# List<entity> 去重(lambda递归方式去重)

1.实体类

public class Student
    {
        public int Id { get; set; }

        public string Head { get; set; }
    }

2.数据源

List<Student> list = new List<Student>()
            {
                new Student
                {
                    Head="11",
                    Id=1
                },
                 new Student
                {
                    Head="12",
                    Id=2
                },
                  new Student
                {
                    Head="13",
                    Id=3
                },
                   new Student
                {
                    Head="14",
                    Id=4
                },
                    new Student
                {
                    Head="15",
                    Id=1
                },
                     new Student
                {
                    Head="16",
                    Id=2
                },
            };

3.去重

Func<List<Student>, List<Student>> func = null;

            list = (func = (List<Student> par) =>
            {
                var ids = par.GroupBy(t => t.Id).Where(t => t.Count() > 1).Select(t => t.Key).ToList();

                if (ids == null || ids.Count < 1)
                    return par;

                ids.ForEach(t =>
                {
                    par.Remove(par.FirstOrDefault(p => p.Id == t));
                });

                return func(par);
            }).Invoke(list);

4.可以直接使用新方法DistinctBy()去重,也可以实现接口IEqualityComparer,重写Equals 和hashCode(可以看看我另外一篇文章通用去重)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值