ormlite servicestack 联接表列上的ServiceStack或MLite OrderBy,ormlite-servicestack,ormlite Servicestack" /> ormlite servicestack 联接表列上的ServiceStack或MLite OrderBy,ormlite-servicestack,ormlite Servicestack" />

ormlite servicestack 联接表列上的ServiceStack或MLite OrderBy

ormlite servicestack 联接表列上的ServiceStack或MLite OrderBy,ormlite-servicestack,ormlite Servicestack,我希望在OrmLite中使用查询中多个联接表的数据生成OrderBy语句: myQuery.OrderBy<MainTable, SubTable>((m, s) => m.Col1 < s.Col2) myQuery.OrderBy((m,s)=>m.Col1m.Col1m.Col1) .然后是(s=>s.Col2); 如果需要按表达式排序,可以使用字符串: q.OrderBy("Col1 < Col2"); q.OrderBy(“Col1m.Col1)}s

我希望在OrmLite中使用查询中多个联接表的数据生成OrderBy语句:

myQuery.OrderBy<MainTable, SubTable>((m, s) => m.Col1 < s.Col2)
myQuery.OrderBy((m,s)=>m.Col1
正如您可以使用OrmLite的WHERE子句一样:

myQuery.Where<MainTable, SubTable>((m, s) => m.Col1 < s.Col2)
myQuery.Where((m,s)=>m.Col1

但使用OrderBy是不可能的。我可以用另一种方法解决这个问题吗?

使用
OrderBy
ThenBy
按多列排序,例如:

q.OrderBy<MainTable>(m => m.Col1)
 .ThenBy<SubTable>(s => s.Col2);
q.OrderBy(m=>m.Col1)
.然后是(s=>s.Col2);
如果需要按表达式排序,可以使用字符串:

q.OrderBy("Col1 < Col2");
q.OrderBy(“Col1
供使用:

q.OrderBy($”{q.Column(m=>m.Col1)}<{q.Column(s=>s.Col2)});
在最新的v5.5.1版本中,您还可以使用OrderBy中多个表的类型化表达式,例如:

q.OrderBy<MainTable, SubTable>((m, s) => m.Col1 < s.Col2 ? m.Col1 : s.Col2)
q.OrderBy((m,s)=>m.Col1
这适用于某些表达式,但是否可以将linq包含在以下表达式中:
q.OrderBy((m,s)=>(m.Col1!=null?s.Col2:s.Col3))
-并利用OrmLite将其转换为正确的目标SQL,而不是执行字符串表达式?@PerErikGransøe这已添加到OrmLite中,请查看我的更新答案。
q.OrderBy<MainTable, SubTable>((m, s) => m.Col1 < s.Col2 ? m.Col1 : s.Col2)