LINQ去除重复数据时报错"不支持用于查询运算符Distinct的重载",怎么解决?

标签: Linq C#
发布时间: 2010/3/19 16:13:59

我写了下面一个类,然后在LINQ的查询语句后追加.Distinct(new MyComparer());
想实现查询的结果里,不存在姓名相同的行。
编译通过了,但使用它就报错说“不支持用于查询运算符“Distinct”的重载。”。

    class MyComparer : IEqualityComparer<User>
    {
        public bool Equals(User x, User y)
        {
            if (x == null && y == null)
            {
                return false;
            }
            else
            {
                return x.username == y.username;
            }
        }

        public int GetHashCode(User obj)
        {
            return obj.username.GetHashCode();
        }
    }
User是Model中的类,查询语句返回的是IQueryable <User>型的数据

解决方法 1:

使用这种去除重复数据的方法(自定义的比较): .Distinct(new MyComparer()); 必须先.AsEnumerable()一下。结果需要转换成IQueryable型的,最佳方法是用.AsQueryable()。

官方微信
官方QQ群
31647020