注意:db.SqlQueryable只支持简单查询的Sql不能是存储过程和一些特殊逻的Sql,复杂的Sql和存储过程操作 请看文档 【原生Sql操作】
注意: order by写外面
int total=0; var list = db.SqlQueryable<Student>("select * from student") .Where(it=>it.Id==1)//可以表达式 .OrderBy("id asc")//也可以SQL .ToPageList(1, 2,ref total); //使用in var list2= db.SqlQueryable<Student>("select * from student where id in (@ids) ").AddParameters(new SugarParameter[] { new SugarParameter("@ids", new int[] { 1, 2 }) }) .OrderBy("id asc") .ToPageList(1,2); //当我们不需要分页等操作时,请使用db.Ado.SqlQuery,这个功能支持的更全面 var list = db. Ado.SqlQuery<Student>("复杂Sql或者存储过程");
var list= db.SqlQueryable<Student>("select * from student").Where(it=>it.Id==1).ToPageList(1, 2);
var list= db.SqlQueryable<Student>("select * from student").Where("id=@id",new { id=1}).ToPageList(1, 2); //如果多个参数 new { id=1 , name="xx"} 用逗号隔开
var list = db.SqlQueryable<Student>("select * from student where id=@id").AddParameters(new { id=1}).ToPageList(1, 2, ref total); //如果多个参数 new { id=1 , name="xx"} 用逗号隔开
AddParameters 有很多重载
ISugarQueryable<T> AddParameters(object parameters);
ISugarQueryable<T> AddParameters(SugarParameter[] parameters);
ISugarQueryable<T> AddParameters(List<SugarParameter> parameters);
var list= db.SqlQueryable<object>("select * from student").Where("id=@id",new {id=1 }).ToDataTablePage(1, 2);
var list= db.SqlQueryable<object>("select * from [order] where id in(@ids)" ) .AddParameters(new{ids= new int[] { 1,2,3}} )//这儿id需要一个数组 .ToList()
和Dapper中的Query<T,T2>效果一样
SQL 规则: 别名.列名 as [表名.列名]
表达式规则: 如下面2个SELECT用法 别名要一样
var x= db.SqlQueryable<dynamic>(@"SELECT [o].[Id] AS [Order.Id] , [o].[Name] AS [Order.Name] , [o].[Price] AS [Order.Price] , [o].[CreateTime] AS [Order.CreateTime] , [o].[CustomId] AS [Order.CustomId] , [i].[ItemId] AS [OrderItem.ItemId] , [i].[OrderId] AS [OrderItem.OrderId] , [i].[Price] AS [OrderItem.Price] , [i].[CreateTime] AS [OrderItem.CreateTime] FROM [Order] o Inner JOIN [OrderDetail] i ON ( [o].[Id] = [i].[OrderId] )") .Select(it=>new { o=new Order(),i=new OrderItem()})//设置返回类型 .Select("*")//让上面一行不生成SQL .ToList(); //SELECT中的列想动态生成可以用 db.DbMaintenance.GetColumnInfosByTableName(“表名”) //根据表名获取列名集合
2016 © donet5.comApache Licence 2.0