gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 08:08:08 24 4
gpt4 key购买 nike

我有以下 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”子句添加到查询中,它就出现了,在此之前它编译得很好,所以我对正在发生的事情有一种预感,但我不能完全理解它。

最佳答案

尝试声明 posts具体为IQueryable<Post>而不是 var (它将获取 IOrderedQueryable<Post>(它仍将订购)。

或者,重新构建它,以便我们在最后订购,允许我们(可选)引入 where在中间:

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# - 无法将 IQueryable<> 转换为 IOrderedQueryable 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1732236/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com