前言

  Linq的强大大家有目共睹,可以以简便的方式对数据集进行复杂操作,LinqToSql经常使用在数据库的联表、分组等查询操作中;FreeSql对LinqToSql的支持通过扩展包FreeSql.Extensions.Linq;
 
 

Init

dotnet add package FreeSql.Extensions.Linq
 

说明

  • 请尽量不要在 ISelect 模式下的使用 Linq 方法:GroupJoin、Select、SelectMany、Join、DefaultIfEmpty;
  • 如果一定要在 ISelect 中使用 .Select() 方法,请务必在 .ToList() 之前调用它;
  • IQueryable 的实现目前不支持 GroupBy,可以考虑使用 RestoreSelect 方法转回 ISelect 进行查询

ISelect与Queryable的转换

var query = _freeSql.Select<Student>().AsQueryable();
query.RestoreToSelect();
 
 

示例

(from s in _freeSql.Select<Student>()
select s).ToList();
SELECT a.[Id], a.[Name], a.[Age], a.[Status], a.[AddTime], a.[Remark], a.[Version], a.[ClassId]
FROM [Student] a (from s in _freeSql.Select<Student>()
join c in _freeSql.Select<Class>() on s.ClassId equals c.Id into temp
from sc in temp.DefaultIfEmpty()
where s.Status == StatusEnum.Normal
select new
{
SName = s.Name,
CName = sc.Name
})
.Page(2, 10)
.ToList(); SELECT a.[Name] as1, sc.[Name] as2
FROM [Student] a
LEFT JOIN [Class] sc ON a.[ClassId] = sc.[Id]
WHERE (a.[Status] = 1)
ORDER BY a.[Id]
OFFSET 10 ROW
FETCH NEXT 10 ROW ONLY

Linq查询,联表使用较好,分组查询还是得使用ISelect,运用ISelect、IQueryable转换可以实现复杂查询

FreeSql学习笔记——11.LinqToSql的更多相关文章

  1. Ext.Net学习笔记11:Ext.Net GridPanel的用法

    Ext.Net学习笔记11:Ext.Net GridPanel的用法 GridPanel是用来显示数据的表格,与ASP.NET中的GridView类似. GridPanel用法 直接看代码: < ...

  2. SQL反模式学习笔记11 限定列的有效值

    目标:限定列的有效值,将一列的有效字段值约束在一个固定的集合中.类似于数据字典. 反模式:在列定义上指定可选值 1. 对某一列定义一个检查约束项,这个约束不允许往列中插入或者更新任何会导致约束失败的值 ...

  3. golang学习笔记11 golang要用jetbrain的golang这个IDE工具开发才好

    golang学习笔记11   golang要用jetbrain的golang这个IDE工具开发才好  jetbrain家的全套ide都很好用,一定要dark背景风格才装B   从File-->s ...

  4. Spring MVC 学习笔记11 —— 后端返回json格式数据

    Spring MVC 学习笔记11 -- 后端返回json格式数据 我们常常听说json数据,首先,什么是json数据,总结起来,有以下几点: 1. JSON的全称是"JavaScript ...

  5. Python3+Selenium3+webdriver学习笔记11(cookie处理)

    #!/usr/bin/env python# -*- coding:utf-8 -*-'''Selenium3+webdriver学习笔记11(cookie处理)'''from selenium im ...

  6. 并发编程学习笔记(11)----FutureTask的使用及实现

    1. Future的使用 Future模式解决的问题是.在实际的运用场景中,可能某一个任务执行起来非常耗时,如果我们线程一直等着该任务执行完成再去执行其他的代码,就会损耗很大的性能,而Future接口 ...

  7. 《C++ Primer Plus》学习笔记11

    <C++ Primer Plus>学习笔记11 第17章 输入.输出和文件 <<<<<<<<<<<<<< ...

  8. SpringMVC:学习笔记(11)——依赖注入与@Autowired

    SpringMVC:学习笔记(11)——依赖注入与@Autowired 使用@Autowired 从Spring2.5开始,它引入了一种全新的依赖注入方式,即通过@Autowired注解.这个注解允许 ...

  9. Spring 源码学习笔记11——Spring事务

    Spring 源码学习笔记11--Spring事务 Spring事务是基于Spring Aop的扩展 AOP的知识参见<Spring 源码学习笔记10--Spring AOP> 图片参考了 ...

  10. 汇编学习笔记(11)int指令和端口

    格式 int指令也是一种内中断指令,int指令的格式为int n,n是中断类型码.也就是说,使用int指令可以调用任意的中断例程,例如我们可以显示的调用0号中断例程,还记得在汇编学习笔记(10)中我们 ...

随机推荐

  1. 数据库管理软件之DataGrip

    DataGrip 是由JetBrains公司推出的数据库管理软件,DataGrip支持几乎所有主流的关系数据库产品,如DB2.Derby.H2.MySQL.Oracle.PostgreSQL.SQL ...

  2. 【kernel】从 /proc/sys/net/ipv4/ip_forward 参数看如何玩转 procfs 内核参数

    本文的开篇,我们先从 sysctl 这个命令开始. sysctl 使用 sysctl 是一个 Linux 系统工具,后台实际上是 syscall,它允许用户查看和动态修改内核参数. # 查看当前设置的 ...

  3. Vue.js与jQuery混用

    标签: js 坑位 最近开发一个需求,项目有用到jQuery和Vue,发现我jQuery绑定的事件全部都失效了. Why Vue会重新渲染dom,加上是异步实例Vue.所以正常写程序的话jq的$()获 ...

  4. 树莓派获取唯一ID

    树莓派的CPU有序列号,可以通过读取 /proc/cpuinfo 获取 储存的UUID,可以通过 ls /dev/disk/by-uuid或blkid

  5. Flutter TextField设置值后光标位置偏移

    Flutter TextField设置值后光标位置偏移 一般用controller设置值是这样设置的 TextEditingController controller = TextEditingCon ...

  6. 类型判断运算符(as、is、is!)

    类型判断运算符 as.is.is! 运算符是在运行时判断对象类型的运算符. as 类型转换(也用作指定 类前缀)) is 如果对象是指定类型则返回 true is! 如果对象是指定类型则返回 fals ...

  7. 序列化与反序列化的概念、基于django原生编写5个接口、drf介绍和快速使用、cbv源码分析

    目录 一.序列化反序列化 二.基于django原生编写5个接口 三.drf介绍和快速使用 概念 安装 代码 四.cbv源码分析 一.序列化反序列化 api接口开发,最核心最常见的一个过程就是序列化,所 ...

  8. Table flags are 0 in the data dictionary but the flags in file ./ibdata1 are 0x4800!

    1.问题截图 cat /var/log/mysql/error.log 2019-01-28T09:49:57.076019Z 0 [ERROR] [FATAL] InnoDB: Table flag ...

  9. java到报名的编码运行

    Hello.java package a.b; import com.beyondiary.kit.KitConstant; public class Hello { public static vo ...

  10. Unity 3D使用C#脚本实例

    界面 结构 代码 1 using System.Collections; 2 using System.Collections.Generic; 3 using UnityEngine; 4 usin ...