c# – 无法将IQueryable <>转换为IOrderedQueryable错误

前端之家收集整理的这篇文章主要介绍了c# – 无法将IQueryable <>转换为IOrderedQueryable错误前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有以下LINQ代码
var posts = (from p in db.Posts
         .Include("Site")
         .Include("PostStatus")
        where p.Public == false
        orderby p.PublicationTime 
        select p);

        if (!chkShowIgnored.Checked) {
            posts = posts.Where(p => p.PostStatus.Id != 90);
        }

最后一行(额外的地方)给我的错误

不能将“System.Linq.IQueryable”类型隐式转换为“System.Linq.IOrderedQueryable”.

我不知道这是什么意思
为什么我得到这个错误
一旦我在查询添加了“orderby”子句,就可以在编译好之前出现,所以我有一种预感,但是我不能把我的手指放在这里.

解决方法

尝试将帖子专门声明为IQueryable< Post>而不是var(它会拾取IOrderedQueryable< Post>(它仍将被排序).

或者,重新构造它,所以我们在最后订购,允许我们(可选)带入中间的位置:

var posts = from p in db.Posts
             .Include("Site")
             .Include("PostStatus")
            where p.Public == false
            select p);

if (!chkShowIgnored.Checked) {
    posts = posts.Where(p => p.PostStatus.Id != 90);
}
var finalQuery = posts.OrderBy(p => p.PublicationTime);

(显然,我们看看finalQuery)

错误的原因是目前您(基本上):

IOrderedQueryable<Post> posts = {snip};
...
posts = {something (Where) that returns IQueryable<Post>}

猜你在找的C#相关文章