Dan*_*ola 13 c# iqueryable type-conversion linq-to-sql 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);
}
Run Code Online (Sandbox Code Playgroud)
最后一行(额外的地方)给了我错误:
无法将类型'System.Linq.IQueryable'隐式转换为'System.Linq.IOrderedQueryable'.
我不确定这意味着什么......
为什么我会收到这个错误?
一旦我将"orderby"子句添加到查询中,它之前就编译好了,所以我对所发生的事情有一种预感,但我无法完全理解它.
Mar*_*ell 23
尝试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);
Run Code Online (Sandbox Code Playgroud)
(显然,我们看看finalQuery)
它出错的原因是目前你(基本上)有:
IOrderedQueryable<Post> posts = {snip};
...
posts = {something (Where) that returns IQueryable<Post>}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10438 次 |
| 最近记录: |