实体方式
使用实体类方式,要保证生成的Select中的列要一致,用Select一定要 new Class或者 ((object)new {}写法 保证返回类型是引用类型
1 2 3 |
var q1 = db.Queryable<Student>().Select(it=>new Model{ name=it.Name }); var q2 = db.Queryable<School>().Select(it => new Model { name = it.Name }); var list = db.UnionAll(q1, q2).ToList(); |
生成的Sql如下:
1 2 |
SELECT * FROM (SELECT [Name] AS [name] FROM [STudent] UNION ALL SELECT [Name] AS [name] FROM [School] ) unionTable |
匿名对象方式
注意:要加一个object的强制转换
1 2 3 |
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>(); |
单个字段
同上,要加一个object的强制转换
1 2 3 4 |
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(); |