Net中 .DIstinct方法无法去重问题

本文探讨了在.Net环境中,针对List无法直接通过.Distinct方法有效去重的解决方案。建议通过循环判断、使用表达式或者确保列表元素实现IEquatable接口并重写Equals和GetHashCode方法来实现去重功能。以MasterGroupLink的list MasterGroup为例,展示了去重操作的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

List无法去重解决方案

  1. 使用循环,判断每个元素是否重复

  2. 使用表达式

    list<user> users=new
    users.Where((x,i)=>users.FindIndex(z=>z.name == x.name) == i)
    
  3. List中的元素实现IEquatabe接口,并提供Equals方法和GetHashCode方法

    //定义MasterGroupLink类
    public class MasterGroupLink
    {
        public Guid? MasterGroupId { get; set; }
        public int? LinkType { get; set; }
        public List<MasterConditons> Detaillinks { get; set; }
    }
    
    //定义MasterGroupLinkCompare类 继承 IEqualityComparer
    public class MasterGroupLinkCompare : IEqualityComparer<MasterGroupLink>
    {
        public bool Equals(MasterGroupLink x, MasterGroupLink y)
        {
            return x.MasterGroupId.Equals(y.MasterGroupId) && x.LinkType.Equals(y.LinkType);
        }
    
        public int GetHashCode(MasterGroupLink obj)
        {
            return 0;
        }
    }
    

    现在存在一个MasterGroupLink的list :MasterGroup 可以直接调用方法去重

    MasterGroup = MasterGroup.Distinct(new MasterGroupLinkCompare ()).ToList();
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值