I have the following LINQ code:
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);
}
That last line (the extra where) is giving me the error:
Cannot implicitly convert type 'System.Linq.IQueryable' to 'System.Linq.IOrderedQueryable'.
I'm not sure what this means...
Why am I getting this error?
It appeared once I added the "orderby" clause to the query, before that it compiled fine, so I have kind of a hunch of what is going on, but I can't quite put my finger into it.
The result of the lambda expressionis of type IQueryable. It doesn't allows the extension method Where, so to use it first you must convert this to, for example, a list.
You could do this using
Try declaring
posts
specifically asIQueryable<Post>
rather thanvar
(which will pick up theIOrderedQueryable<Post>
(it will still be ordered).Alternatively, re-structure it so we order at the end, allowing us to (optionally) bring in the
where
in the middle:(obviously, we look at
finalQuery
)The reason it is erroring is that currently you have (essentially):