我在我的控制器的searchString中遇到了这个错误。
下面是我的代码:
if (!String.IsNullOrEmpty(searchString))
{
posts = posts.Where(post => post.Body == searchString);
}
我在我的索引中使用这些代码进行搜索。这里有什么声明错误或其他问题吗?我已经尝试过谷歌搜索,但没有找到清晰的答案。提前感谢任何能帮助我的人。
我在我的控制器的searchString中遇到了这个错误。
下面是我的代码:
if (!String.IsNullOrEmpty(searchString))
{
posts = posts.Where(post => post.Body == searchString);
}
我在我的索引中使用这些代码进行搜索。这里有什么声明错误或其他问题吗?我已经尝试过谷歌搜索,但没有找到清晰的答案。提前感谢任何能帮助我的人。
最可能的原因是您在具有 OrderBy
的查询中使用了隐式的 var
声明来声明 posts
。如果您用下面的代码替换它:
IQueryable<Post> posts = someSource.Where(cond).OrderBy(/*the culprit*/);
错误应该消失。
你的 posts
变量似乎是 IOrderedQueryable<Post>
类型,但你将其赋值为 IQueryable<Post>
。解决此问题的两种方法:要么将变量类型修改为 IQueryable<Post>
,要么按如下方式对查询进行排序:
posts = posts.Where(post => post.Body == searchString)
.OrderBy(post => post.Date);
posts
是 IOrderedQueryable
,而 where 方法的调用返回了一个 IQueryable
。为什么不明确声明变量并查看是否可以解决问题呢?