原本不支持 IQueryable 主要出于使用习惯的考虑,如果继承 IQueryable,编写代码的智能总会提示出现一堆你不想使用的方法(对不起,我有强迫症),IQueryable 自身提供了一堆没法实现的方法,还有外部入侵的扩展方法,严重影响编码体验。如下图:

原以为必须实现 IQueryable 才可以实现,结果一次惊喜,原来只要有对应的方法就成。

虽然支持了,但是还是推荐使用【链式 + lambda】 !!!

特别说明

这次功能更新,ISelect 增加了 5个方法,对【链式 + lambda】的用户可能会造成少许影响,我在注释上标明了,如下图:

特别是 .Select(),原先没有支持,该功能与 ToList(a => new Dto{}) 合并实现的。

需要避免一下坑:

  • 如果一定要使用 .Select() 方法,请务必在 .ToList() 之前调用它;

  • 请减少图中方法在【链式 + labmda】模式下的使用;

所有 ISelect 都可以使用 linq to sql,包括 Repository、DbContext;

Where

var t1 = (from a in fsql.Select<Student>()where a.id == item.idselect a
).ToList();

Select(指定字段)

var t1 = (from a in fsql.Select<Student>()where a.id == item.idselect new { a.id }
).ToList();

CaseWhen

var t1 = (from a in fsql.Select<Student>()where a.id == item.idselect new {a.id,a.name,testsub = new {time = a.age > 10 ? "大于" : "小于或等于"}}
).ToList();

Join

var t1 = (from a in fsql.Select<Student>()join b in fsql.Select<School>() on a.id equals b.StudentIdselect a
).ToList();var t2 = (from a in fsql.Select<Student>()join b in fsql.Select<School>() on a.id equals b.StudentIdselect new { a.id, bid = b.id }
).ToList();var t3 = (from a in fsql.Select<Student>()join b in fsql.Select<School>() on a.id equals b.StudentIdwhere a.id == item.idselect new { a.id, bid = b.id }
).ToList();

LeftJoin

var t1 = (from a in fsql.Select<Student>()join b in fsql.Select<School>() on a.id equals b.StudentId into tempfrom tc in temp.DefaultIfEmpty()select a
).ToList();var t2 = (from a in fsql.Select<Student>()join b in fsql.Select<School>() on a.id equals b.StudentId into tempfrom tc in temp.DefaultIfEmpty()select new { a.id, bid = tc.id }
).ToList();var t3 = (from a in fsql.Select<Student>()join b in fsql.Select<School>() on a.id equals b.StudentId into tempfrom tc in temp.DefaultIfEmpty()where a.id == item.idselect new { a.id, bid = tc.id }
).ToList();

From(多表查询)

var t1 = (from a in fsql.Select<Student>()from b in fsql.Select<School>()where a.id == b.StudentIdselect a
).ToList();var t2 = (from a in fsql.Select<Student>()from b in fsql.Select<School>()where a.id == b.StudentIdselect new { a.id, bid = b.id }
).ToList();var t3 = (from a in fsql.Select<Student>()from b in fsql.Select<School>()where a.id == b.StudentIdwhere a.id == item.idselect new { a.id, bid = b.id }
).ToList();

GroupBy(分组)

var t1 = (from a in fsql.Select<Student>()where a.id == item.idgroup a by new {a.id, a.name } into gselect new {g.Key.id, g.Key.name,cou = g.Count(),avg = g.Avg(g.Value.age),sum = g.Sum(g.Value.age),max = g.Max(g.Value.age),min = g.Min(g.Value.age)}
).ToList();

系列文章导航

  • (一)入门

  • (二)自动迁移实体

  • (三)实体特性

  • (四)实体特性 Fluent Api

  • (五)插入数据

  • (六)批量插入数据

  • (七)插入数据时忽略列

  • (八)插入数据时指定列

  • (九)删除数据

  • (十)更新数据

  • (十一)更新数据 Where

  • (十二)更新数据时指定列

  • (十三)更新数据时忽略列

  • (十四)批量更新数据

  • (十五)查询数据

  • (十六)分页查询

  • (十七)联表查询

  • (十八)导航属性

  • (十九)多表查询

  • (二十)多表查询 WhereCascade

  • (二十一)查询返回数据

  • (二十二)Dto 映射查询

  • (二十三)分组、聚合

  • (二十四)Linq To Sql 语法使用介绍

  • (二十五)延时加载

  • (二十六)贪婪加载 Include、IncludeMany、Dto、ToList

  • (二十七)将已写好的 SQL 语句,与实体类映射进行二次查询

  • (二十八)事务

  • (二十九)Lambda 表达式

  • (三十)读写分离

  • (三十一)分区分表

  • (三十二)Aop

  • (三十三)CodeFirst 类型映射

  • (三十四)CodeFirst 迁移说明

  • (三十五)CodeFirst 自定义特性

转载于:https://www.cnblogs.com/FreeSql/p/11531392.html

FreeSql (二十四)Linq To Sql 语法使用介绍相关推荐

  1. FreeSql (十四)批量更新数据

    FreeSql支持丰富的更新数据方法,支持单条或批量更新,在特定的数据库执行还可以返回更新后的记录值. var connstr = "Data Source=127.0.0.1;Port=3 ...

  2. mysql循环查询一个表中的数据并进行修改_JavaScript学习笔记(二十四)-- MYSQL基础操作...

    MYSQL mysql 是一个数据库的名字 和 php 合作的比较好的数据库 之前我们说过一个问题,前端向后端索要数据,后端就是去数据库中查询数据,返回给前端 接下来就聊聊使用 php 操作数据库 M ...

  3. SAP UI5 初学者教程之二十四 - 如何使用 OData 数据模型试读版

    一套适合 SAP UI5 初学者循序渐进的学习教程 教程目录 SAP UI5 本地开发环境的搭建 SAP UI5 初学者教程之一:Hello World SAP UI5 初学者教程之二:SAP UI5 ...

  4. Docker最全教程之MySQL容器化 (二十四)

    Docker最全教程之MySQL容器化 (二十四) 原文:Docker最全教程之MySQL容器化 (二十四) 前言 MySQL是目前最流行的开源的关系型数据库,MySQL的容器化之前有朋友投稿并且写过 ...

  5. (100)详细描述一个你做过的项目, 面试必问(二十四)(第20天)

    (100)详细描述一个你做过的项目, 面试必问(二十四)(第20天) 1 文章目录 1)文章目录 2)FPGA初级课程介绍 3)FPGA初级课程架构 4)详细描述一个你做过的项目, 面试必问(二十四) ...

  6. MySQL二十四:索引

    MySQL二十四:索引的介绍与分类 MySQL官方对索引的定义为:索引(index)是帮助MySQL高效获取数据的数据结构. 提取句子主干,就可以得到索引的本质:索引是数据结构. 在一个表中,主键索引 ...

  7. JavaWeb开发与代码的编写(二十四)

    JavaWeb开发与代码的编写(二十四) JNDI数据源的配置 数据源的由来 在Java开发中,使用JDBC操作数据库的四个步骤如下: ①加载数据库驱动程序(Class.forName("数 ...

  8. java从入门到精通二十四(三层架构完成增删改查)

    java从入门到精通二十四(三层架构完成增删改查) 前言 环境准备 创建web项目结构 导入依赖和配置文件 创建层次模型 实现查询 实现添加 实现修改 完成删除 做一个用户登录验证 会话技术 cook ...

  9. 【Microsoft Azure 的1024种玩法】二十四.通过Azure Front Door 的 Web 应用程序防火墙来对 OWASP TOP 10 威胁进行防御

    [简介] 我们都知道像 SQL 注入.跨站点脚本攻击(XSS)之类的恶意攻击以及 OWASP 发现的十大威胁都可能会导致服务中断或数据丢失,让 Web 应用程序所有者受到巨大威胁.那么如何有效的解决O ...

最新文章

  1. 【网络流】解题报告:luogu P3376 【模板】网络最大流
  2. 图灵访谈 | 王贝珊:乘风破浪的成长之路
  3. [转载]极速狂飚 Windows 2003系统25招加速大法
  4. 渗透知识-SSRF漏洞
  5. 【其他】U盘安装Ubuntu12.04成功后系统无法启动的问题
  6. 浅谈mysql的子查询
  7. 随机生成元素升序向量_实验二MATLAB运算基础 -
  8. 贪心法——LeetCode 55 跳跃游戏
  9. DataFrame对比RDD
  10. macOS Catalina常见问题汇总
  11. 北理乐学大学计算机实验4,北理乐学C语言答案.docx
  12. latex安装教程以及入门
  13. 如何将bmp格式图片批量转换成jpg格式的
  14. php特殊字体生成,生成艺术字体图片水印代码_PHP教程
  15. 面对“职业规划”问题,程序员应该如何回答?
  16. 依行科技日常实习面经
  17. 岳父岳母-12个未接电话
  18. python 基础 之 re正则表达式的知识点整理,并简单使用说明
  19. 基于matlab的SMO实现
  20. 人工智能基础之数学符号篇

热门文章

  1. wince投屏苹果手机_怎么把手机上的导航映射到中控屏
  2. 比较文本差异的工具_Linux 开发的五大必备工具 | Linux 中国
  3. REVERSE-PRACTICE-BUUCTF-9
  4. Tarjan 算法 常用模板
  5. 【牛客 - 331J】炫酷数学(打表猜结论,按位枚举证明)
  6. 14.深度学习练习:Face Recognition for the Happy House
  7. python tabula 使用方法_Python中os.walk()的使用方法
  8. c语言课程笔记格式,C语言课程学习笔记.docx
  9. C# 字符串逗号分隔存到List 数组(互相转换)
  10. 在JSP页面中输出JSON格式数据