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是什么数据类型?它是从哪里来的?你在任何地方对它进行排序吗?哇。。是的,你说得对,伙计。。你的回答对我来说非常合适。它起作用了。。谢谢!!