我有一些记录给了我需要订购的课程。
值是简单的0,1,2。问题是客户端需要根据类名而不是类值按顺序显示记录。该命令应如下所示。
class (TBD)= 0
class (2/3)= 2
class (1)= 1Using System.Linq.Dynamic我已经能够将列和那里的方向传递到我的OrderBy()中。是否有一种方法可以传递一个表达式,强制排序顺序为
升序:类(TBD)= 0,类(2/3)= 2,类(1)= 1
降序:类(1)= 1,类(2/3)= 2,类(TBD)= 0
我试过asc:
sort = "(Class = 0) desc, (Class = 2) desc, (Class = 1) desc";经社部:
sort = "(Class = 1) desc, (Class = 2) desc, (Class = 0) desc";但我得到了Operator '=' incompatible with operand types 'String' and 'Int32'之前,我使用'==‘,并得到了类似的信息。
searchUniq = searchUniq.OrderBy(sort).Skip(skip).Take(25);发布于 2015-08-11 16:35:52
您的字符串不是动态Linq的有效排序语法。尝试:
sort = "iif(Class == 1, 0, iif(Class == 2, 1, 2))";这使用动态Linq中可用的内联if表达式(至少有一种风格,请参阅这里获得更多文档),以将类值转换为直观有序的内容。普通的SQL等价物是按case语句进行排序。
https://stackoverflow.com/questions/31946804
复制相似问题