【问题标题】:Cannot implicitly convert type 'System.Linq.IQueryable<>' to 'System.Linq.IOrderedQueryable<>' [duplicate]无法将类型“System.Linq.IQueryable<>”隐式转换为“System.Linq.IOrderedQueryable<>”[重复]
【发布时间】:2013-01-09 04:31:42
【问题描述】:

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

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

这是我的代码:

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

我正在使用此代码在我的索引中进行搜索。 我在这里声明有什么问题吗?我已经尝试过谷歌搜索,但没有找到明确的答案。提前感谢任何可以帮助我的人..

【问题讨论】:

  • 什么是帖子,您是如何声明/使用它的?
  • 这个帖子看起来很相似:stackoverflow.com/questions/1732236/…posts 是什么数据类型?它从哪里来的?您是否在任何地方对其进行排序(orderby)?

标签: c#


【解决方案1】:

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

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

错误应该消失。

【讨论】:

  • 哇.. 是的,你是对的,伙计.. 你的回答对我来说很完美。它有效.. 谢谢:).. !!
【解决方案2】:

您的posts 变量似乎是IOrderedQueryable&lt;Post&gt; 类型,但您为其分配了IQueryable&lt;Post&gt;。我看到 2 种方法来解决这个问题,要么将您的变量类型修改为 IQueryable&lt;Post&gt;,要么像这样对您的查询进行排序:

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

【讨论】:

    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-10-29
      • 2011-03-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多