PDF.NET SOD ORM 多表 动态排序

2019-01-03 00:30发布

使用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;

 

标签: 排序
1条回答
混吃等死
2楼-- · 2019-01-03 01:03

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

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;

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

  }

}

查看更多
登录 后发表回答