FreeSql (二十四)Linq To Sql 语法使用介绍
原本不支持 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 语法使用介绍相关推荐
- FreeSql (十四)批量更新数据
FreeSql支持丰富的更新数据方法,支持单条或批量更新,在特定的数据库执行还可以返回更新后的记录值. var connstr = "Data Source=127.0.0.1;Port=3 ...
- mysql循环查询一个表中的数据并进行修改_JavaScript学习笔记(二十四)-- MYSQL基础操作...
MYSQL mysql 是一个数据库的名字 和 php 合作的比较好的数据库 之前我们说过一个问题,前端向后端索要数据,后端就是去数据库中查询数据,返回给前端 接下来就聊聊使用 php 操作数据库 M ...
- SAP UI5 初学者教程之二十四 - 如何使用 OData 数据模型试读版
一套适合 SAP UI5 初学者循序渐进的学习教程 教程目录 SAP UI5 本地开发环境的搭建 SAP UI5 初学者教程之一:Hello World SAP UI5 初学者教程之二:SAP UI5 ...
- Docker最全教程之MySQL容器化 (二十四)
Docker最全教程之MySQL容器化 (二十四) 原文:Docker最全教程之MySQL容器化 (二十四) 前言 MySQL是目前最流行的开源的关系型数据库,MySQL的容器化之前有朋友投稿并且写过 ...
- (100)详细描述一个你做过的项目, 面试必问(二十四)(第20天)
(100)详细描述一个你做过的项目, 面试必问(二十四)(第20天) 1 文章目录 1)文章目录 2)FPGA初级课程介绍 3)FPGA初级课程架构 4)详细描述一个你做过的项目, 面试必问(二十四) ...
- MySQL二十四:索引
MySQL二十四:索引的介绍与分类 MySQL官方对索引的定义为:索引(index)是帮助MySQL高效获取数据的数据结构. 提取句子主干,就可以得到索引的本质:索引是数据结构. 在一个表中,主键索引 ...
- JavaWeb开发与代码的编写(二十四)
JavaWeb开发与代码的编写(二十四) JNDI数据源的配置 数据源的由来 在Java开发中,使用JDBC操作数据库的四个步骤如下: ①加载数据库驱动程序(Class.forName("数 ...
- java从入门到精通二十四(三层架构完成增删改查)
java从入门到精通二十四(三层架构完成增删改查) 前言 环境准备 创建web项目结构 导入依赖和配置文件 创建层次模型 实现查询 实现添加 实现修改 完成删除 做一个用户登录验证 会话技术 cook ...
- 【Microsoft Azure 的1024种玩法】二十四.通过Azure Front Door 的 Web 应用程序防火墙来对 OWASP TOP 10 威胁进行防御
[简介] 我们都知道像 SQL 注入.跨站点脚本攻击(XSS)之类的恶意攻击以及 OWASP 发现的十大威胁都可能会导致服务中断或数据丢失,让 Web 应用程序所有者受到巨大威胁.那么如何有效的解决O ...
最新文章
- 【网络流】解题报告:luogu P3376 【模板】网络最大流
- 图灵访谈 | 王贝珊:乘风破浪的成长之路
- [转载]极速狂飚 Windows 2003系统25招加速大法
- 渗透知识-SSRF漏洞
- 【其他】U盘安装Ubuntu12.04成功后系统无法启动的问题
- 浅谈mysql的子查询
- 随机生成元素升序向量_实验二MATLAB运算基础 -
- 贪心法——LeetCode 55 跳跃游戏
- DataFrame对比RDD
- macOS Catalina常见问题汇总
- 北理乐学大学计算机实验4,北理乐学C语言答案.docx
- latex安装教程以及入门
- 如何将bmp格式图片批量转换成jpg格式的
- php特殊字体生成,生成艺术字体图片水印代码_PHP教程
- 面对“职业规划”问题,程序员应该如何回答?
- 依行科技日常实习面经
- 岳父岳母-12个未接电话
- python 基础 之 re正则表达式的知识点整理,并简单使用说明
- 基于matlab的SMO实现
- 人工智能基础之数学符号篇
热门文章
- wince投屏苹果手机_怎么把手机上的导航映射到中控屏
- 比较文本差异的工具_Linux 开发的五大必备工具 | Linux 中国
- REVERSE-PRACTICE-BUUCTF-9
- Tarjan 算法 常用模板
- 【牛客 - 331J】炫酷数学(打表猜结论,按位枚举证明)
- 14.深度学习练习:Face Recognition for the Happy House
- python tabula 使用方法_Python中os.walk()的使用方法
- c语言课程笔记格式,C语言课程学习笔记.docx
- C# 字符串逗号分隔存到List 数组(互相转换)
- 在JSP页面中输出JSON格式数据