查所有

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();

SqlSugar基础查询的更多相关文章

  1. HQL基础查询语句

    HQL基础查询语句 1.使用hql语句检索出Student表中的所有列 //核心代码 @Test public void oneTest() { Query query=session.createQ ...

  2. Mego开发文档 - 基础查询

    基础查询 Mego 使用语言集成查询(LINQ)从数据库查询数据.LINQ允许您使用C#(或其他.NET语言)根据派生的上下文和实体类编写强类型查询.将LINQ查询的表示传递给数据库提供者,翻译为数据 ...

  3. T-SQL基础查询——单表查询

    1,查询的顺序 SELECT empid, YEAR(orderdate) AS orderyear, COUNT(*) AS numorders FROM Sales.Orders GROUP BY ...

  4. Mongodb 基础 查询表达式

    数据库操作 查看:show dbs; 创建:use dbname; // db.createCollection('collection_name');    隐式创建,需要创建的数据库中有表才表示创 ...

  5. mysql基础查询语法

    一.mysql查询的五种子句 where子句(条件查询):按照“条件表达式”指定的条件进行查询. group by子句(分组):按照“属性名”指定的字段进行分组.group by子句通常和count( ...

  6. SQL基础--查询之三--嵌套查询

    SQL基础--查询之三--嵌套查询

  7. SQL基础--查询之五--查询语句一般格式

    SQL基础--查询之五--查询语句一般格式

  8. SQL基础--查询之四--集合查询

    SQL基础--查询之四--集合查询

  9. SQL基础--查询之一--单表查询

    SQL基础--查询之一--单表查询

  10. SQL基础--查询之二--连接查询

    SQL基础--查询之二--连接查询

随机推荐

  1. Kubernetes(K8S) helm chart

    感觉和放到一个 yaml 文件中,用 ---- 分隔,操作繁琐程度上,没有太大区别 创建自定义 Chart # 创建自定义的 chart 名为 mychart [root@k8smaster ~]# ...

  2. 用 ChatGPT 写一篇《ChatGPT 会取代我们的工作吗》

    自从 ChatGPT 火爆以后,最常谈到的话题就是 ChatGPT 会取代我们的工作吗?在写这篇内容时我有个大胆的想法,那就是让 ChatGPT 来取代我的工作. 首先,我决定直接让 ChatGPT ...

  3. ICASSP 2022 | 前沿音视频成果分享:基于可变形卷积的压缩视频质量增强网络

    阿里云视频云视频编码与增强技术团队最新研究成果论文<基于可变形卷积的压缩视频质量增强网络>(Deformable Convolution Dense Network for Compres ...

  4. 锁定/解锁账户BAPI

    一.锁定/解锁账户 锁定账户后,该账户不能在SAP系统登录,但是已经登录的用户,仍然可以继续使用 解锁账户后,该账户就可以正常登录使用 "-------------------------- ...

  5. 机器学习 | 分类性能度量指标 : ROC曲线、AUC值、正确率、召回率

    本篇博客的图源来自 zhwhong,转载仅作学习使用! 在分类任务中,人们总是喜欢基于错误率来衡量分类器任务的成功程度.错误率指的是在所有测试样例中错分的样例比例.实际上,这样的度量错误掩盖了样例如何 ...

  6. Codeforces Round #629 (Div. 3) & 19级暑假第六场训练赛

    A:Codeforces 1328A Divisibility Problem 整除+模 Input 5 10 4 13 9 100 13 123 456 92 46 Output 2 5 4 333 ...

  7. OKR之剑·实战篇05:OKR致胜法宝-氛围&业绩双轮驱动(上)

    作者:vivo 互联网平台产品研发团队 本文是<OKR 之剑>系列之实战第 5 篇-- 我们的OKR执行如此顺利,离不开我们的"双轮驱动".类似于亚马逊的"飞 ...

  8. vue学习笔记 六、ref定义单个数据

    系列导航 vue学习笔记 一.环境搭建 vue学习笔记 二.环境搭建+项目创建 vue学习笔记 三.文件和目录结构 vue学习笔记 四.定义组件(组件基本结构) vue学习笔记 五.创建子组件实例 v ...

  9. Java面试——数据库知识点

    MySQL 1.建 主键:数据库表中对储存数据对象予以唯一和完整标识的数据列或属性的组合.一个数据列只能有一个主键,且主键的取值不能缺失,即不能为空值(Null). 超键:在关系中能唯一标识元组的属性 ...

  10. C# 绘制面形图

    图形要素:4个点.颜色.作图对象.数据 Graphics g;//创建Graphics对象 private void button1_Click(object sender, EventArgs e) ...