【发布时间】:2017-07-23 16:09:21
【问题描述】:
我有一些函数 (X),它返回带有“OrderBy(x => x.Name)”的 IQueryable。 我想在新代码中使用 X 函数,但是在这段代码中有一个参数决定了顺序(asc/desc)。
我不想更改 (X),因为它已经在多个地方使用过。
有选择获取X(),然后取消它的“OrderBy”,并申请新订单?
(现在它抛出异常,因为它就像 Y.OrderBy(a => a.Name).OrderByDescending(a => a.Name))
“在 order by 列表中指定了不止一次的列。order by 列表中的列必须是唯一的。\r\n无法准备语句。”
【问题讨论】:
-
我认为你需要编写两个分支,一个带有 orderby 另一个带有 orderbydescending。我希望我知道一个更优雅的解决方案..
-
在最后一种情况下你得到什么异常?这应该是次优的,但仍然适用于 AFAICT。
-
@JonHanna the exception is '"在 order by 列表中指定了不止一次的列。order by 列表中的列必须是唯一的。\r\n无法准备语句。”
-
啊。我想这是有道理的。我想我只需对方法进行本地化更改,使用默认值,以便不必更新其他调用者。
-
@JonHanna 在 EF 6 中它适用于多个 orderby,所以你是部分正确的。我认为取决于提供者。
标签: c# sql-order-by iqueryable