首页 > 数据库 >SqlSugar基础查询

SqlSugar基础查询

时间:2024-01-16 15:12:35浏览次数:38  
标签:ToList 基础 db Queryable Student 查询 Where Id 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==1).ToList() //select * from Student where id=1   db.Queryable<Student>().Where(it=>it.name !=null).ToList()//不是null //select * from Student where name is not null   db.Queryable<Student>().Where(it=>it.name ==null).ToList()//是null //select * from Student where name is null   db.Queryable<Student>().Where(it=>it.name !="").ToList()//不是空 ,不为空 //select * from Student where name <> ''

多条件查询 

db.Queryable<Student>().Where(it=>it.Id>10&&it.Name=="a").ToList() //select * from Student where id>10 and name='a' db.Queryable<Student>().Where(it=>it.Id>10).Where(it=>it.Name=="a").ToList() //select * from Student where id>10 and name='a' //如果是或者关系可以用 ||

动态OR查询

var exp= Expressionable.Create<Student>(); exp.OrIF(条件,it=>it.Id==1);//.OrIf 是条件成立才会拼接OR exp.Or(it =>it.Name.Contains("jack"));//拼接OR var list=db.Queryable<Student>().Where(exp.ToExpression()).ToList();

模糊查询

db.Queryable<Student>().Where(it =>it.Name.Contains("jack")).ToList(); //select  * from  Student where name like %jack%

根据主键查询

susgar中的single等同于EF中的SingleOrDefault

/*单主键查询*/ db.Queryable<Student>().InSingle(2) //通过主键查询 SingleById db.Queryable<Student>().Single(it=>it.Id==2) //根据ID查询 //select * from Student where id=2     /*多主键查询*/ var getAll=db.Queryable<Order>().WhereClassByPrimaryKey(new Order(){Pk1=1,Pk2=xx}).ToList(); //单个实体   vargetAll=db.Queryable<Order>().WhereClassByPrimaryKey(List<Order>).ToList(); //支持集合

查询第一条 ,第一行

.First() 等同于C#中的 FirstOrDefault , 没有值返回 null

db.Queryable<Student>().First(it=>it.Id==1) //没有返回Null //select top 1 * from Student where id=1

查询最后一条

First() 等同于C#中的 FirstOrDefault , 没有值返回 null

db.Queryable<Student>() .OrderBy(it=>it.Id,OrderByType.Desc )// 倒序 .First(it=>it.Id>10) //没有返回Null //select top 1 * from Student order by id desc where id>10

查前几条

db.Queryable<Student>().Take(10).ToList() //select top 10 * from Student

数据行数

db.Queryable<Student>().Where(it=>it.Id>11).Count()//同步 db.Queryable<Student>().Where(it=>it.Id>11).CountAsync()//异步 //select count(*) from Student where id>11 //你也可以用函数 SqlFunc.AggregateCount

设置新表名

//例1:更新表名 db.Queryable<School>().AS("Student").ToList(); //生成的SQL  SELECT [ID],[NAME] FROM  Student //动态表名 表别名 指定表明     //例2:给表名添加前缀 db.Queryable<School>().AS("dbo.School").ToList(); //生成的SQL  SELECT [ID],[NAME] FROM  dbo.School     //如果不用AS也可以在特性中设置别名,看文档:实体本置

是否存在记录

is exists

db.Queryable<Student>().Where(it=>it.Id>11).Any() db.Queryable<Student>().Any(it=>it.Id>11) //上面语法的简化 //异步就是 AnyAsync()

In查询(单个字段)

单个字段

int [] allIds =new int[]{2,3,31}; db.Queryable<OrderItem>().Where(it => allIds.Contains(it.OrderId)).ToList() //orderid in (2,3,31)   //字符串类型 varchar和nvarchar (默认varchar来保证性能)  NameList.Contains(it.Name,true//true和false来控制是varchar还是nvarchar

In查询(多个字段)

多个字段 (升级:5.1.4.67-preview04)

 List<OrderItem> list=xxx;  db.Queryable<OrderItem>().Where(it => list.Any(s => s.Id == it.Id && s.Name == it.Name))  //也可以用动态表达式拼OR实现

In模糊查询

对象集合In like 升级:5.1.4.67

 List<OrderItem> list=xxx;  db.Queryable<OrderItem>().Where(it => list.Any(s => it.Name.Contanins(s.Name)))  //也可以用动态表达式拼OR实现

数组集全 in like :5.1.4.85

 

 List<string> list=xxx;  db.Queryable<OrderItem>().Where(it => list.Any(s => it.Name.Contanins(s)))  //也可以用动态表达式拼OR实现

 

Not In

int [] allIds =new int[]{2,3,31}; db.Queryable<OrderItem>().Where(it => !allIds.Contains(it.OrderId)).ToList() //orderid  NOT in (2,3,31)

简单排序

db.Queryable<Student>().OrderBy((st,sc)=>sc.Id,OrderByType.Desc).ToList() //排序 可以多个 //更多用法 https://www.donet5.com/Home/Doc?typeId=2312

查询一列

db.Queryable<Student>().Select(it=>it.Name).ToList() //单值 查询列 查询单独列

查询单条

查询一条

db.Queryable<Student>().Single(it=>it.Id==1) //没有返回Null,如果结果大于1条会抛出错误 //select * from Student where id=1 // 查询id等于1的单条记录

获取最大值

db.Queryable<Order>().Max(it=>it.Id);//同步  db.Queryable<Order>().MaxAsync(it=>it.Id);//异步 //也可以用函数 SqlFunc.AggregateMax

获取最小值

db.Queryable<Order>().Min(it=>it.Id);//同步 db.Queryable<Order>().MinAsync(it=>it.Id);//异步 //也可以用函数 SqlFunc.AggregateMin

求和

db.Queryable<Order>().Sum(it=>it.Id);//同步 db.Queryable<Order>().SumAsync(it=>it.Id);//异步 //也可以用函数 SqlFunc.AggregateSum

查询过滤排除某一个字段

生成的sql Select 不会有Files

   /***单表***/ db.Queryable<Order>().IgnoreColumns(it=>it.Files).ToList();//只支持单表查询       /***联查***/ //是主表 var leftQuery=db.Queryable<Order>().IgnoreColumns(it=>it.Files); var list=db.Queryable(leftQuery).LeftJoin<OrderDetails>((o,d)=>o.id==d.orderid).Select(o=>o).ToList();       //是Join的表 var rightQuery= db.Queryable<OrderItem>().IgnoreColumns(it=>it.Files); var list=db.Queryable<Order>().LeftJoin(rightQuery,(o,d)=>o.Id == d.OrderId).Select(o=>o).ToList();

 

标签:ToList,基础,db,Queryable,Student,查询,Where,Id,SqlSugar
From: https://www.cnblogs.com/yswenli/p/17967703

相关文章

  • 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......
  • GOrm多对多(关联查询)
    一、概述现有两张表,一张表代表章节(chapter)、另外一张表代表集(episode)。一个章节中包含多集,一个集中有可能有视频也有可能没有视频,视频表(video)。表结构如下:1.章节表(chapter),ps:一个章节中包含了多集2.集表(episode),集中有视频3.视频表(video) 要求:查......
  • 某客《微信小程序》从基础到实战视频教程
     第1部分微信小程序从基础到实战课程概要  第1节微信小程序从基础到实战课程概要  1.1微信小程序从基础到实战课程概要  第2部分初识微信小程序   第1节微信小程序简介  2.1微信小程序简介  第2节微信小程序开发准备2.2.1微信小程序开发准......
  • Go+Gin+GOrm+MySql实现基础的增删改查
    一、概述本节使用Gin+GOrm+MySql实现基础的增删改查。主要是做一下记录防止后面忘记了可以翻看博客查看主要有两个.go文件1.main.go用于注册gin路由及初始化gorm操作数据库2.Result.go用于封装服务端返回给客户端的响应体二、代码示例1.main.go//go_......
  • [FAQ] Docker查询出所有的停止容器并移除
     $ dockerrm`dockercontainerls-a--filter"status=exited"|awk'{print$1}'|sed'1,1d'|xargs` Ref:phvia/dkcRef:[Shell]字符截取命令:cut,printf,awk,sedRef:使用nodejs的puppeteer库使用完关闭后,linux上面有很多chrome进程Link:https......
  • U-net基础代码
    importtorchimporttorch.nnasnnclassConvBlock(nn.Module):def__init__(self,in_channels,out_channels):super(ConvBlock,self).__init__()self.conv=nn.Conv2d(in_channels,out_channels,kernel_size=3,stride=1,padding=1)......
  • PyTorch深度学习零基础入门
    在人工智能时代,机器学习技术日新月异,深度学习是机器学习领域中一个全新的研究方向和应用热点,它是机器学习的一种,也是实现人工智能的必由之路。深度学习的出现不仅推动了机器学习的发展,还促进了人工智能技术的革新。PyTorch作为深度学习的重要框架,近年来备受读者喜爱,自推出后得到了......