首页 > 数据库 >SqlSugar的Where用法

SqlSugar的Where用法

时间:2024-01-16 15:27:08浏览次数:28  
标签:Queryable ToList db 用法 var Where id SqlSugar

1、普通表达式查询

//id=@id var list=db.Queryable<Student>().Where(it => it.Id == id).ToList();   //多个条件 var list2=db.Queryable<Student>() .WhereIF(id>0,it => it.Id == id)// 如果id>0 添加条件 id=@id   .WhereIF(name!=null,it => it.name== "a"//如果 name !=null 添加条件 name='a' .ToList();   //id=@id or name like '%'+@name+'%' var list2 = db.Queryable<Student>().Where(it => it.Id == id||it.Name.Contains("jack")).ToList();

表达式: && 表示 and   , || 表式 OR

 

 

2、根据SQL查询

//id=@id var list=db.Queryable<Student>().Where("id=@id",new { id=1}).ToList(); //id=@id or name like '%'+@name+'%' var list2 = db.Queryable<Student>().Where("id=@id or name like '%'+@name+'%' ",new { id=1,name="jack"}).ToList();

 

3、动态查询

 [    {"FieldName":"id","ConditionalType":"0","FieldValue":"1"},    {"FieldName":"name","ConditionalType":"0","FieldValue":"jack"}  ]      //5.0.5.1 Json直接序列化   var conModels= db.Context.Utilities.JsonToConditionalModels(json)     var student = db.Queryable<Student>().Where(conModels).ToList(); // id=1 and name=jack           //手动构造    //var conModels = new List<IConditionalModel>();   //conModels.Add(new ConditionalModel{ FieldName = "id",ConditionalType=ConditionalType.Equal,FieldValue="1"});   //conModels.Add(new ConditionalModel{ FieldName = "name",ConditionalType=ConditionalType.Equal,FieldValue="jack"})

点击查看: https://www.donet5.com/Home/Doc?typeId=2314

 

4、动态拼表达式查询 ,拼拉姆达

//创建表达式 var exp= Expressionable.Create<Student>()                 .And(it=>it.Id==1)                 .Or(it =>it.Name.Contains("jack"))                 .ToExpression();//注意 这一句 不能少 //使用表达式                 var list=db.Queryable<Student>().Where(exp).ToList();     //多表查询 var exp=Expressionable.Create<T1,T2>()

 

5、条件拼接查询

var query = db.Queryable<Student>().Where(it=>it.Id==1);    if(条件)   query.Where(it => it.Name == "jack");  if(条件)    query.Where(it => it.Id==1);       int count=query.Clone().Count();//当query用于2个地方的时候一定要加Clone这点和EF有本质区别  var list=query.Clone.ToList();

 

6、链式条件查询

var query = db.Queryable<Student>()                 .WhereIF(!string.IsNullOrEmpty(name), it => it.Name.Contains(name))                 .WhereIF(id>0, it => it.Id==id).ToList();

 

7、根据Class查询,根据实查询

var getAll = db.Queryable<Order>().WhereClass(new Order() { Name="a"},ignoreDefaultValue:true).ToList();//单个实体   var getAll = db.Queryable<Order>().WhereClass(List<Order>,ignoreDefaultValue:true).ToList();//支持集合   //ignoreDefaultValue=true 那么实体中的ID=0就不是条件,ID=1就会当作条件 //根据实体类查询

 

8、根据Class中主键查询

 var getAll = db.Queryable<Order>().WhereClassByPrimaryKey(new Order() { Id=1 }).ToList(); //单个实体     var getAll = db.Queryable<Order>().WhereClassByPrimaryKey(List<Order>).ToList(); //支持集合     //根据实体类中的主键查询

 

9、根据字典查询

适合多字段批量过滤

var getAll=db.Queryable<Order>().WhereColumns(new List<Dictionary<stringobject>>).ToList()

 

10、查询函数

Where中使用SqlFunc函数

var list=db.Queryable<Order>().Where(it=>SqlFunc.DateIsSame(it.Time,DateTime.Now)).ToList()

https://www.donet5.com/Home/Doc?typeId=1190

 

11、Where中有子查询

var list= db.Queryable<Student>() .Where(st=> SqlFunc.Subqueryable<School>().Where(sch=>sch.Id==st.SchoolId).Any()).ToList(); //更多用法看菜单:子查询

 

12、Where中用SQL

var list=db.Queryable<Student>().Where("id=@id",new {id=1}).ToList()

 

13、字符串表达式

5.1.4.107-preview14+

 //程序启动时配置   StaticConfig.DynamicExpressionParserType = typeof(DynamicExpressionParser);   StaticConfig.DynamicExpressionParsingConfig = new ParsingConfig()//用到SqlFunc需要配置这个属性             {                 CustomTypeProvider = new SqlSugarTypeProvider()//最下面             };                  //注意:第二个参数必须要有$  //参数化:可以缓存创建性能好  //如果没有$ 需要用 FormattableStringFactory.Create("it=>it.Id=={0}", 1)                               //导航属性动态  var list3 = db.Queryable<UnitPerson011>().Where("it", $"it=>SqlFunc.Exists(it.Address.Id)").ToList();      //普通条件动态  var list4 = db.Queryable<UnitPerson011>().Where("it", $"it=>it.Name=={"a"}").ToList();      //动态类+动态条件  var list5=db.QueryableByObject(typeof(UnitPerson011)).Where("it", $"it=>it.Address.Id=={1}").ToList();          //扩展类型              public class SqlSugarTypeProvider : DefaultDynamicLinqCustomTypeProvider         {             public override HashSet<Type> GetCustomTypes()             {                 var customTypes = base.GetCustomTypes();                 customTypes.Add(typeof(SqlFunc));//识别SqlFunc                 return customTypes;             }         }            

 

标签:Queryable,ToList,db,用法,var,Where,id,SqlSugar
From: https://www.cnblogs.com/yswenli/p/17967726

相关文章

  • SqlSugar的Select用法
    Select位置正常情况:应该在最后面,一般是.Where(..).OrderBy(..).Select(..).ToList()特殊情况:如果Select不是最后一个位置,则Select要加MergeTable()合并成一个表,Select(...).MergeTable().Where语法糖:Select(...).MergeTable()在新版本中可以用SelectMergeTable(it=>newx......
  • SqlSugar跨库查询/多库查询
    一、跨库方式1:跨库导航(5.1.3.24)优点1:支持跨服务器,支持跨数据库品种,支持任何类型数据库 优点2:  超级强大的性能,能达到本库联表性能缺点:不支持子表过滤主表(方案有ToList后在内存过滤,如果分页可以查前1000条主表在内存分页前端只显示前10页)[Tenant("db2")] //......
  • SqlSugar新增数据
    1、插入方式1.1单条插入实体//返回插入行数db.Insertable(insertObj).ExecuteCommand(); //都是参数化实现//异步: await db.Insertable(insertObj).ExecuteCommandAsync() //插入返回自增列 (实体除ORACLE外实体要配置自增,Oracle需要配置序列)db.Insertable(in......
  • SqlSugar更新数据
    1、根据实体对象更新所谓按实体对象更新就是:db.Updateable(参数对象)有参数的重载db.Updateable(实体或者集合).ExecuteCommand() //右标题1 下面的所有菜单优点1、代码少2、支持各种批量修改缺点1、不支持表达式和sql函数2、依赖 实体对象,没实体对象就需......
  • SqlSugar删除数据
    1、根据实体删除1.1强类型实体 需要配置主键,根据主键删除需要给实体配置主键,参考文档实体配置//单个实体db.Deleteable<Student>(new Student() { Id = 1 }).ExecuteCommand(); //List<实体> (可以不加Where)List<Student> list=new List<Student>(){......
  • SqlSugar基础查询
    查所有List<Student> list=db.Queryable<Student>().ToList()//select * from Student查询总数int count=db.Queryable<Student>().Count()//select count(1) from Student按条件查询db.Queryable<Student>().Where(it=>it.Id......
  • SqlSugar分组查询
    一、分组查询和使用1.1语法只有在聚合对象需要筛选的时候才会用到Having,一般分组查询用不到可以去掉  var list = db.Queryable<Student>()             .GroupBy(it => new { it.Id, it.Name }) //可以多字段             .Whe......
  • SqlSugar分页查询
    同步分页 int pagenumber= 1; // pagenumber是从1开始的不是从零开始的 int pageSize = 20; int totalCount=0; //单表分页 var page = db.Queryable<Student>().ToPageList(pagenumber, pageSize, ref totalCount); //如果SqlServer不想有Rownumb......
  • SqlSugar联表查询
    Join用法语法糖1、2和3在WhereOrderByGroupBySelect用法都一样的,他们区别就在JOIN的方式不一样,其它都一样语法糖1  优点:好理解,5个表以内的联表非常爽,支持功能全缺点: 联表超过5个以上的表后(x,b,c...) 会比较难看,语法糖2可以弥补表和表的左连接  新语法糖 5.0.......
  • SqlSugar入门
    SqlSugar入门创建对象你可以使用SqlSugarClient(new模式)或者 SqlSugarScope(单例) 对数据库进行增、删、查、改等功能注意:除了名字和使用模式不同,功能和API都一模一样SqlSugarClient(new模式)优点:性能比SqlSugarScope有5%左右提升缺点:db不能跨上下文使用,需要new......