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])”,因此该方法无法转换为存储表达式。
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的类型。
在线等。说详细点哈。
实在想做的话,尝试newslist = newslist.OrderBy(x=>x.nID).ToList().Distinct();
将数据加载入内存,用CLR来做DISTINCT追问
还有什么好的解决方法,数据过滤好,我还要分页。
追答没啥好办法,在text上加DISTINCT本身就有问题,项目回炉重新架构一个吧……
参考技术A 没有足够的上下文,比较好的办法是写一个简单的demo,不然就留你联系。追问865788926
以上是关于Linq Distinct报错,急,在线等的主要内容,如果未能解决你的问题,请参考以下文章