C# 无法隐式转换类型';系统Linq.IQueryable<&燃气轮机';至';System.Linq.IOrderedQueryable<&燃气轮机';

C# 无法隐式转换类型';系统Linq.IQueryable<&燃气轮机';至';System.Linq.IOrderedQueryable<&燃气轮机';,c#,C#,可能重复: 我在控制器的searchString中发现此错误 这是我的密码: if (!String.IsNullOrEmpty(searchString)) { posts = posts.Where(post => post.Body == searchString); } 我在索引中使用这些代码进行搜索。 我是不是说这里有什么问题?我已经尝试过谷歌搜索,但没有找到明确的答案。提前感谢任何能帮助我的人 最可能的原因是您在具有OrderBy的查询中为posts使用了隐式va

可能重复:

我在控制器的searchString中发现此错误

这是我的密码:

if (!String.IsNullOrEmpty(searchString))
{ 
    posts = posts.Where(post => post.Body == searchString);
}
我在索引中使用这些代码进行搜索。
我是不是说这里有什么问题?我已经尝试过谷歌搜索,但没有找到明确的答案。提前感谢任何能帮助我的人

最可能的原因是您在具有
OrderBy
的查询中为
posts
使用了隐式
var
声明。如果你把它换成

IQueryable<Post> posts = someSource.Where(cond).OrderBy(/*the culprit*/);
IQueryable posts=someSource.Where(cond).OrderBy(/*罪魁祸首*/);

错误应该会消失。

posts
IOrderedQueryable
,对where的调用返回
IQueryable
。为什么不显式声明变量,看看它是否解决了问题。

您的
posts
变量似乎属于
IOrderedQueryable
类型,但您正在为其分配一个
IQueryable
。我看到了两种解决方法,将变量类型修改为
IQueryable
,或按如下方式对查询进行排序:

posts = posts.Where(post => post.Body == searchString)
    .OrderBy(post => post.Date);

什么是post以及您是如何声明/使用它的?这个线程看起来很相似:post是什么数据类型?它是从哪里来的?你在任何地方对它进行排序吗?哇。。是的,你说得对,伙计。。你的回答对我来说非常合适。它起作用了。。谢谢!!