Попробуйте объявить 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>}