我有一些函数(X)通过“OrderBy(x => x.Name)”返回IQueryable。 我想在新代码中使用X函数,但在此代码中有一个参数确定顺序(asc / desc)。
我不想改变(X),因为它已在多个地方使用过。
有获取X()的选项,然后取消它的“OrderBy”,并应用新订单?
(现在它抛出异常,因为它就像Y.OrderBy(a => a.Name).OrderByDescending(a => a.Name))
“列表中的列已被多次指定。列表中的列必须是唯一的。\ r \ n语句无法准备。”
答案 0 :(得分:1)
使用
public void x(string order = string.empty)
{
Y.OrderBy(a => a.Name);
if (order == "desc")
{
Y = Y.Reverse();
}
}
答案 1 :(得分:0)
我试图摆弄你的方法实际返回的IOrderedQueryable的Expression对象(我错了吗?)但是到目前为止没有运气,我看不到操作System.Linq.Expression或System.Linq的选项.EnumerableQuery很容易使用它而不是改变X()方法。
恕我直言,你应该选择:如果您正在谈论“功能”,您能否为您澄清一下您在应用程序中通过ORM(例如实体框架)映射的sql函数,或者只是使用自定义提供程序的普通方法返回IQueryable?