首页 新闻 搜索 专区 学院

PDF.NET SOD ORM 多表 动态排序

0
[已解决问题] 解决于 2018-06-27 05:05

使用SOD中ORM方式进行多表(表中存在同名字段)联合查询的时候如何动态排序,如下排序字段在多表中只有一个可以,有同名字段的时候就会报错(动态排序是硬性需求)

var v1 = new table1() { column1 = "1" };

var v2 = new table2() { column1 = "2" };

OQL q = OQL.From(v1)

.InnerJoin(v2)

.On(v1.ID, v2.ID)

.Select(v1.column1, v2.column1)

.Where(v1.column1,v2.column1)

.OrderBy(new string[] { "column1 desc" })

.END;

 

穷途之哭灬的主页 穷途之哭灬 | 初学一级 | 园豆:3
提问于:2018-06-26 01:31
< >
分享
最佳答案
0

没法了,使用映射暴力解决...

namespace a

public b

{

  //把所有查询用的实体放在这里,公开

  public table1 v1 = new table1() { column1 = "1"  };

  public table2 v2 = new table2() { column1 = "2"  };

  public void Select(string vi_field = "v1_column1",string type = "asc")

  {

    // 自己拆分一下,起名的时候对应上规则

    // vi = "v1",名称对应实例化的变量名

    // field = "column1",对应实体类中的属性

    var Oc = this.GetType().GetField(vi).GetValue(this);

    OQL q = OQL.From(v1)

    .InnerJoin(v2)

    .On(v1.ID, v2.ID)

    .Select(v1.column1, v2.column1)

    .OrderBy(Oc.GetType().GetProperty(field).GetValue(Oc), type)

    .END;

    //解决单排序字段的动态排序问题,不用构造视图了

  }

}

穷途之哭灬 | 初学一级 |园豆:3 | 2018-06-26 20:38
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册