前言

  FreeSql中查询的支持非常丰富,包括链式语法,多表查询,表达式函数;写法多种多样,可以使用简单的条件查询、sql查询、联表、子表等方式用于查询数据,
查询的格式也有很丰富,包括单条记录,列表、扩展分页、Dto映射,不可谓不强大。
 
 

简单查询

  使用Where方法传入条件,生成sql的条件查询
_freeSql.Select<Student>()
.Where(x => x.Id > 10)
.ToList();
//SELECT a.[Id], a.[Name], a.[Age], a.[Status], a.[AddTime], a.[Remark], a.[Version] FROM[Student] a WHERE(a.[Id] > 10)
 
 

查询指定字段

  需要返回的字段写在执行sql获取结果的方法中,最终返回一个匿名类
_freeSql.Select<Student>()
.Where(x => x.Id > 10)
.ToList(x => new { x.Id, x.Name });
//SELECT a.[Id], a.[Name] FROM[Student] a WHERE(a.[Id] > 10)
 
 

条件查询

List<long> rows = new List<long> { 1, 2, 3 };
_freeSql.Select<Student>()
.Where(x => rows.Contains(x.Id))
.ToList();
//SELECT a.[Id], a.[Name], a.[Age], a.[Status], a.[AddTime], a.[Remark], a.[Version] FROM[Student] a WHERE(((a.[Id]) in (1, 2, 3)))
 

分页查询

  分页查询使用Page(1,20)直接指定PageIndex和PageSize即可,总数通过Count()获取,分页API中还有Skip,Take,Offset,Limit用于分页
_freeSql.Select<Student>()
.Page(2, 5)
.Count(out var total)
.OrderBy(x => x.Id)
.ToList();
//SELECT a.[Id], a.[Name], a.[Age], a.[Status], a.[AddTime], a.[Remark], a.[Version]
//FROM[Student] a
//ORDER BY a.[Id]
//OFFSET 5 ROW
//FETCH NEXT 5 ROW ONLY
//total=15
 

分块查询ToChunk

  分块查询对大批量的数据很友好,可减少内存开销,每次只查指定条数,这就意味着会查询多次数据库,每次查询完把数据集插入列表
var studentList =new List<Student>();
_freeSql.Select<Student>().OrderBy(a => a.Id).ToChunk(5, done => {
studentList.AddRange(done.Object);
Console.WriteLine(JsonConvert.SerializeObject(done));
});
 
  上面一共15条记录,按照每次查询5条,一共查了三次,这里是三次的结果

 

Dto映射查询

  先创建一个StudentDto,设置了一个Student类中没有的RegistTime字段
查看代码
public class StudentDto
{
public int Id { get; set; } public string Name { get; set; } public DateTime RegistTime { get;set; }
}

//未纠正映射
_freeSql.Select<Student>()
.Where(x => x.Id == 10)
.First<StudentDto>();
//{"Id":10,"Name":"小明8","RegistTime":"0001-01-01T00:00:00"}
  Dto与查询类型之间如果字段名不同,只能是默认值
//纠正映射
_freeSql.Select<Student>()
.Where(x => x.Id == 10)
.First(x=> new StudentDto { RegistTime=x.AddTime});
//{"Id":10,"Name":"小明8","RegistTime":"2022-05-19T11:16:44.447"}

  使用纠正映射,将Student.AddTime映射到StudentDto.RegistTime上面,就能处理这种情况
  
 
 
 
 
 

FreeSql学习笔记——3.查询的更多相关文章

  1. mybatis学习笔记(14)-查询缓存之中的一个级缓存

    mybatis学习笔记(14)-查询缓存之中的一个级缓存 标签: mybatis mybatis学习笔记14-查询缓存之中的一个级缓存 查询缓存 一级缓存 一级缓存工作原理 一级缓存測试 一级缓存应用 ...

  2. Linux学习笔记(七) 查询系统

    1.查看命令 (1)man 可以使用 man 命令名称 命令查看某个命令的详细用法,其显示的内容如下: NAME:命令名称 SYNOPSIS:语法 DESCRIPTION:说明 OPTIONS:选项 ...

  3. MongoDB学习笔记六—查询下

    查询内嵌文档 数据准备 > db.blog.find().pretty() { "_id" : ObjectId("585694e4c5b0525a48a441b5 ...

  4. MongoDB学习笔记五—查询上

    数据准备 { , "goods_name" : "KD876", "createTime" : ISODate("2016-12- ...

  5. hibernate学习笔记6--Criteria查询方式、完整小练习(开发步骤)

    一.Criteria查询方式没有sql语了,因此更加面向对象一些.Criteria是一种比HQL更面向对象的查询方式:Criteria的创建方式: Criteria c = s.createCrite ...

  6. Oracle 学习笔记 常用查询命令篇

    1.查询某个用户下有多少张表 有时候很有用  select count(*) from dba_tables t where t.owner='SCOTT';

  7. Hibernate学习笔记--------4.查询

    一.Get/Load Get方法是立即检索,而load是延迟检索,他们都是根据主键进行查询.在<class>标签中,若把lazy属性改为false,load方法就会立即检索,class中的 ...

  8. 【SQL】MySQL学习笔记1-----子查询

    1.什么叫子查询? 通俗的讲就是查询中有查询,SQL语句中有多个select语句. 2.什么地方可以嵌入子查询? SELECT 列 (不在标准之内) FROM 表 (可以嵌入,作为表存在) WHERE ...

  9. Entity Framework with MySQL 学习笔记一(查询)

    参考 : http://msdn.microsoft.com/en-us/data/jj574232.aspx EF 查询基本上有3中 默认是 Lazy Loading 特色是只有在需要数据的时候EF ...

  10. MySQL学习笔记(二)—查询

    一.多表连接查询 新建两张表t_user.t_order.              1.内连接      返回满足条件的所有记录. (1)显式内连接      使用inner join关键字,在on ...

随机推荐

  1. 反编译wx小程序遇到的问题

    怎么反编译就不说了,有很多文章,推荐两个 http://t.csdnimg.cn/DrvBZ http://t.csdnimg.cn/NOEys 下面开始说问题 _typeof3 is not a f ...

  2. cajviewer逆向分析-HN文件格式分析和010editor模板开发

    文章首发于 https://mp.weixin.qq.com/s/7STPL-2nCUKC3LHozN6-zg 概述 本文介绍对cajviewer中对HN文件格式的逆向分析并介绍如何编写相应的010e ...

  3. [Blazor] 一文理清 Blazor Identity 鉴权验证

    一文理清 Blazor Identity 鉴权验证 摘要 在现代Web应用程序中,身份认证与授权是确保应用安全性和用户数据保护的关键环节.Blazor作为基于C#和.NET的前端框架,提供了丰富的身份 ...

  4. 【Python】2023年Python期末复习题

    Python百分百挂科指南 出题人,出的题,水平不咋样,给出的参考答案一堆错误,给出的正确选项单词都能拼错. 非本次考试人员不必看,没有参考价值 选择题 下列哪个标识符是不合法的()D A. Name ...

  5. arm mattermost

    It's not so hard, here is my working steps for arm64 device. cd ~/build/mattermost wget https://raw. ...

  6. java判断反射的Field是不是用final修饰

    今天调用Field.set方法报错: Caused by: java.lang.IllegalAccessException: Can not set static final long field ...

  7. .NET Core 类型系统(Types System)底层原理浅谈

    C#类型系统 C# 是一种强类型语言. 每个变量和常量都有一个类型,每个求值的表达式也是如此. 每个方法声明都为每个输入参数和返回值指定名称.类型和种类(值.引用或输出). .NET 类库定义了内置数 ...

  8. 基于Three.js的大屏3D地图(一)

    依赖安装 yarn add three yarn add @types/three yarn add d3-geo three库安装后在node_modules下其还包含核心three/src和插件t ...

  9. Java Web学生自习管理系统

    一.项目背景与需求分析 随着网络技术的不断发展和学校规模的扩大,学生自习管理系统的需求日益增加.传统的自习管理方式存在效率低下.资源浪费等问题,因此,开发一个智能化的学生自习管理系统显得尤为重要.该系 ...

  10. Ps cs4 -把GIF背景变透明-简单操作,还可以将视频转换GIF

    准备软件: 1.Ps cs4 2.QuickTime Player 7.74 开始: 1. 2.弹出文件选择框,但是发现不能选择GIF格式. 3.没关系,在文件名框输入*.*回车,就发现可以选择GIF ...