使用实体类方式,要保证生成的Select中的列要一致,用Select一定要 new Class或者 ((object)new {}写法 保证返回类型是引用类型
var q1 = db.Queryable<Student>().Select(it=>new Model{ name=it.Name }); //select结构要一样 var q2 = db.Queryable<School>().Select(it => new Model { name = it.Name }); var list = db.UnionAll(q1, q2).ToList();
生成的Sql如下:
SELECT * FROM (SELECT [Name] AS [name] FROM [STudent] UNION ALL SELECT [Name] AS [name] FROM [School] ) unionTable
要加一个object的转换
//SqlSugarCore 5.1.4.147-preview14 及以上 完美支持匿名对象 请升级 var q1=db.Queryable<Order>().Select(it => new { id=it.Id });//select结构要一样 var q2 = db.Queryable<Order>().Select(it =>new { id = it.Id }); db.UnionAll(q1, q2).ToList(); //SqlSugarCore 5.1.4.147-preview14 及以下 var q1=db.Queryable<Order>().Select(it => (object)new { id=it.Id }); var q2 = db.Queryable<Order>().Select(it =>(object) new { id = it.Id }); db.UnionAll(q1, q2).Select<Order>().ToList();
var q1=db.Queryable<Order>().Where(it=>it.id>10).Select(it =>(object) it.Name); var q2=db.Queryable<Order>().Where(it=>it.id==2).Select(it => (object)it.Name); var kust=db.UnionAll(q1, q2) .Select<string>().ToList();
var q1=db.Queryable<UnitNClobTest>().AsWithAttr();//转换表名 具体用法看跨库查询 AS 出来的表名规则一样的 var q2=db.Queryable<UnitNClobTest>().AsWithAttr(); db.UnionAll(q1, q2).ToList();
升级最新
2016 © donet5.comApache Licence 2.0