Linq Distinct报错,急,在线等

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linq Distinct报错,急,在线等相关的知识,希望对你有一定的参考价值。

linq语句
PagedList<Books> books = db.Books.Where(b => b.BookName.Contains(key) || b.Author.Contains(key)).Distinct(new BookName_Distinct()).OrderByDescending(b => b.GetTime).OrderByDescending(b => b.UpdateTime).ToPagedList(i, 15);

public class BookName_Distinct : IEqualityComparer<Books>

public bool Equals(Books x, Books y)

return true;

public int GetHashCode(Books obj)

return 0;


报错
LINQ to Entities 不识别方法“System.Linq.IQueryable`1[SouBook.Models.Books] Distinct[Books](System.Linq.IQueryable`1[SouBook.Models.Books], System.Collections.Generic.IEqualityComparer`1[SouBook.Models.Books])”,因此该方法无法转换为存储表达式。

参考技术A new BookName_Distinct()

EF无法用自定义的比较方式比较的,因为没办法转换为SQL。硬要这样做的话,尝试一下先ToList转列表后,在内存中用Linq to Object比较。
参考技术B public int GetHashCode(Books obj)

return obj.ToString().ToLower().GetHashCode();


BookName_Distinct里的第二个函数照上面改一下试试。

c# linq Distinct 过滤重复项怎么做啊

newslist = newslist.OrderBy(x=>x.nID).Distinct();

出现错误“ text 数据类型不能选为 DISTINCT,因为它不可比。”

前提是不修改数据库表字段text的类型。

在线等。说详细点哈。

text类型就别做DISTINCT了,效率会让你吐血。

实在想做的话,尝试newslist = newslist.OrderBy(x=>x.nID).ToList().Distinct();

将数据加载入内存,用CLR来做DISTINCT追问

还有什么好的解决方法,数据过滤好,我还要分页。

追答

没啥好办法,在text上加DISTINCT本身就有问题,项目回炉重新架构一个吧……

参考技术A 没有足够的上下文,比较好的办法是写一个简单的demo,不然就留你联系。追问

865788926

以上是关于Linq Distinct报错,急,在线等的主要内容,如果未能解决你的问题,请参考以下文章

c# linq Distinct 过滤重复项怎么做啊

win7旗舰版上安装oracle的时候报错!!!!!急!!!在线等.............

比较级(急!在线等!)

composer无法安装,在线等,急!!!!

火炬之光2 报错,急。。。。急。。。。急

50分悬赏!急!!!急!!!路由器安装问题 在线等