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

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

    private List edges = new List();

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

下面这种试下


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

class User:IEquatable//继承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  },用三元表达式解决你说的头尾
小蜜蜂论坛回帖机倒装的情形


///


    /// 可枚举类型扩展;
    ///

    public static class EnumerableExtensions
    {
        ///
        /// 按指定字段排除重复项;
        /// https://www.cnblogs.com/niuzaihenmang/p/5620915.html
        /// 示例:peopleList.DistinctBy(i => new { i.UserName }).ToList();
        ///

        ///
        ///
        ///
        ///
        ///
        public static IEnumerable DistinctBy(this IEnumerable source, Func keySelector)
        {
            HashSet hashSet = new HashSet();
            foreach (TSource item in source)
            {
                if (hashSet.Add(keySelector(item)))
                {
                    yield return item;
                }
            }
        }
    }
 

你可能感兴趣的:(在C#中如何List去除重复元素?)