无法隐式转换类型'System.Linq.IQueryable<>'到'System.Linq.IOrderedQueryable<>'

时间:2013-01-09 04:31:42

标签: c#

  

可能重复:
  LINQ2SQL: Cannot convert IQueryable<> to IOrderedQueryable error

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

这是我的代码:

if (!String.IsNullOrEmpty(searchString))
{ 
    posts = posts.Where(post => post.Body == searchString);
}

我在我的索引中使用此代码进行搜索。 我在这里或其他什么地宣布了错误吗?我已经尝试过谷歌搜索,但没有找到一个明确的答案。提前感谢任何可以帮助我的人..

3 个答案:

答案 0 :(得分:20)

最可能的原因是您在var的查询中对posts使用了隐式OrderBy声明。如果用

替换它
IQueryable<Post> posts = someSource.Where(cond).OrderBy(/*the culprit*/);

错误应该消失。

答案 1 :(得分:6)

您的posts变量似乎属于IOrderedQueryable<Post>类型,但您要为其分配IQueryable<Post>。我看到了两种解决方法,要么将变量类型修改为IQueryable<Post>,要么将查询排序为:

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

答案 2 :(得分:0)

postsIOrderedQueryable,对where的调用返回IQueryable。为什么不明确声明变量并查看它是否解决了问题。