在C#中如何List去除重复元素?

在C#中如何List去除重复元素?List中有两个一样的元素,想把两个都去除,用remove和removeall都不行,list中是对象,distinct好像也不太好使,还请各位帮忙解答一下。代码片段如下:classEdge{publicPointFstart;publicPointFend;}privateList<Edge>…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

List中有两个一样的元素,想把两个都去除,用remove和removeall都不行,list中是对象,distinct好像也不太好使,还请各位帮忙解答一下。
代码片段如下:
    class Edge
    {

        public PointF start;
        public PointF end;
    }

    private List<Edge> edges = new List<Edge>();

经过计算后edges中有一些edge对象,有些对象是相同的线段,但是首尾可能相反,如何判断是相同的线段,并且将两个相同的都删除?

下面这种试下

List<User> nonDuplicateList1 = users.Distinct().ToList();//通过User类的Equals实现去重

class User:IEquatable<User>//继承IEquatable接口,实现Equals方法。List就可以使用Distinct去重 

    public string name { get; set; } 
    string address; 

    public User(string _name, string _address) 
    { 
        name = _name; 
        address = _address; 
    } 

    public override string ToString() 
    { 
        return string.Format(“name:{0},\taddress:{1}”, name, address); 
    } 

    public bool Equals(User other) 
    { 
        return this.name == other.name; 
    } 
    public override int GetHashCode() 
    { 
        return name.GetHashCode(); 
    } 
}
1.用GroupBy分组取第一条,实现去重,edges = edges.GroupBy(****).Select(x => x.First()).ToLust()
2.括号里是分组条件,这是一个对象分组new { a = x.start, b = x.end  },用三元表达式解决你说的头尾
小蜜蜂论坛回帖机倒装的情形

/// <summary>
    /// 可枚举类型扩展;
    /// </summary>
    public static class EnumerableExtensions
    {

        /// <summary>
        /// 按指定字段排除重复项;
        /// https://www.cnblogs.com/niuzaihenmang/p/5620915.html
        /// 示例:peopleList.DistinctBy(i => new { i.UserName }).ToList();
        /// </summary>
        /// <typeparam name=”TSource”></typeparam>
        /// <typeparam name=”Tkey”></typeparam>
        /// <param name=”source”></param>
        /// <param name=”keySelector”></param>
        /// <returns></returns>
        public static IEnumerable<TSource> DistinctBy<TSource, Tkey>(this IEnumerable<TSource> source, Func<TSource, Tkey> keySelector)
        {

            HashSet<Tkey> hashSet = new HashSet<Tkey>();
            foreach (TSource item in source)
            {

                if (hashSet.Add(keySelector(item)))
                {

                    yield return item;
                }
            }
        }
    }

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/231307.html原文链接:https://javaforall.net

(0)
上一篇 2025年6月13日 下午10:43
下一篇 2025年6月13日 下午11:22


相关推荐

  • curl支持ssl报错:SSL certificate problem: unable to get local issuer certificate

    curl支持ssl报错:SSL certificate problem: unable to get local issuer certificatecurl 去访问 https 的站点报错 curl vhttps www baidu com SSLv3 TLShandshake Clienthello 1 SSLv3 TLShandshake Serverhello 2 SSLv3 TLShandshake CERT 11 SSLv3 TLSalert Serverhello

    2026年3月17日
    2
  • 深度学习、机器学习方向计算机毕业设计题目大全(算法应用实践类)

    深度学习、机器学习方向计算机毕业设计题目大全(算法应用实践类)(吐血整理)手动整理了1500多个深度学习及机器学习相关算法在实际应用中的项目,完全可以作为本科生当前较新的毕业设计题目选择方向。讲道理有些题目,比如“用户评分的隐式成分信息的研究”这种题目取的就比较广,有点科学研究的味道,如果真的去做,还是比较有技术含量的。因为其下一步的应用是具有广阔前景的。还有部分项目可能需要大量的数据集,收集的收集和整理比较麻烦。另外对自己电脑的要求也比较高。大家在选择…

    2022年5月7日
    110
  • MONTHS_BETWEEN函数「建议收藏」

    MONTHS_BETWEEN函数「建议收藏」 MONTHS_BETWEEN函数MONTHS_BETWEEN(x,y)用于计算x和y之间有几个月。如果x在日历中比y早,那么MONTHS_BETWEEN()就返回一个负数。注意:在调用MONTHS_BETWEEN函数时,日期的次序非常重要:如果想让结果为正数,稍晚的时间必须出现在前面。下面这个例子显示了2008年5月25日和2008年1月15日之间相差的月数。注意由于

    2022年7月12日
    29
  • 龙芯CPU架构_龙芯mips架构

    龙芯CPU架构_龙芯mips架构龙芯架构龙芯指令集:CPU访存指令24个全部来自MIPSCPU算数指令(ALU)10个全部来自MIPSCPU算数指令14个全部来自MIPSCPU乘除指令12个来自MIPS12个来自龙芯(其中8个重复MIPS指令功能)CPU跳转分支指令20个全部来自MIPSCPU位移指令15个全部来自MIPSCPU特殊指令2个全部来自MIPSCPU异常指令12个全…

    2025年9月7日
    18
  • MOS开关电路_场效应管开关电路 实例

    MOS开关电路_场效应管开关电路 实例1mos管和三极管是构成芯片的基础元件,分立和mos,三极管在我们平常的电路中也是用的最多的。mos和电压控制型元件,而三极管是电流控制型元件。分别在mos的GS和三极管的IB给到一定的电压和电流,在mos的DS和三极管的CE就会有相应的电压变化。根据这个变化可以做成放大电路和开关电路,开关电路即放大电路的状态达到饱和状态。今天分享MOS的两个开关电路2.电平转换电路这个电路是双向电平转换电路分析:当uc_io为低电平时,M1导通,V2的电流流过R2,经过M1的DS到uc_io的低电平,从而实

    2026年1月28日
    8
  • 科大讯飞将举办全球1024开发者节 发布星火大模型最新进展

    科大讯飞将举办全球1024开发者节 发布星火大模型最新进展

    2026年3月14日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号