您的位置:首页 > 其它

LINQ中使用Distinct去除重复的对象

2018-01-03 16:44 330 查看
.net中自带的比较器Compare是值类型比较,要想比较对象,即引用类型.我们需要重写比较器.

新建RefComparer.cs类

创建一个委托,用于传入需要比较的对象

public delegate bool EqualsComparer<T>(T x, T y);

然后重写Equals和GetHashCode方法即可

具体代码如下

public delegate bool EqualsComparer<T>(T x, T y);

    /// <summary>

    /// 引用类型比较器

    /// </summary>

    /// <typeparam name="T"></typeparam>

    public class RefComparer<T> : IEqualityComparer<T>

    {

        private EqualsComparer<T> comparer;

        public RefComparer(EqualsComparer<T> equalsComparer)

        {

            this.comparer = equalsComparer;

        }

        public bool Equals(T x, T y)

        {

            if (this.comparer != null)

                return this.comparer(x, y);

            else

                return false;

        }

        public int GetHashCode(T obj)

        {

            return obj.ToString().GetHashCode();

        }

    }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: