前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >ASP.NET MVC5高级编程 ——(7)LINQ to SQL

ASP.NET MVC5高级编程 ——(7)LINQ to SQL

作者头像
浩Coding
发布于 2019-07-03 03:00:13
发布于 2019-07-03 03:00:13
2.6K0
举报
文章被收录于专栏:浩Coding浩Coding

引言——Model 实现数据访问

1.1 LINQ

LINQ( Language Integrated Query )——语言集成查询,.NET Framework 3.5 中出现的技术,其命名空间(.NET Framework):System.Linq;

LINQ 是一组语言特性和API,使得开发人员可以使用统一的方式编写各种查询。查询的对象包括XML、对象集合SQL Server 数据库等等。

1.2 LINQ要解决的问题

长期以来,开发社区形成以下格局:

  • 面向对象与数据访问两个领域长期分裂,各自为政
  • 编程语言中的数据类型与数据库中的数据类型形成两套体系。例如: -- C# 中字符串用 string 表示 -- SQL 中字符串用 NVarchar/Varchar/Char 表示
  • SQL 编码体验落后: -- 没有智能感应 -- 没有严格意义上的强类型和类型检查
  • SQL 和 XML 都有各自的查询语言,而对象没有自己的查询语言

1.3 LINQ的组成

LINQ 主要包含以下三部分:

LINQ to Objects 主要负责对象的查询

LINQ to XML 主要负责 XML 的查询

LINQ to ADO.NET 主要负责数据库的查询:

-- LINQ to SQL

-- LINQ to DataSet

-- LINQ to Entities

如图所示:

2.1 LINQ 第一例

在没有LINQ以前,我们这样查询:

用LINQ, 我们可以这样查询:

3.1 匿名方法

.NET FrameWork 在 C# 2.0 中,加入了匿名方法特性:

在 C# 3.0 中,继匿名方法之后加入了更为简洁的 Lambda 表达式

3.2 Lambda表达式语法

最基本的 Lambda 表达式语法如下:

参数列表中的参数类型可以是明确类型或者是推断类型(var)

如果是推断类型,则参数的数据类型将由编译器根据上下文自动推断出来。

如果参数列表只包含一个推断类型参数时,可以去掉括号:

完整的写法是最安全的 ,所以重点应该先讲清楚完整格式,各种简写方式都是有前提假设条件的。

如果方法体只包含一条语句时,可以去掉花括号:

3.3 Lambda表达式的更多例子

3.4 Lambda与匿名方法的关系

总体上说,匿名方法可以看作是Lambda 表达式的功能子集,但是两者存在以下区别:

  • Lambda 表达式的参数允许不指明参数类型,而匿名方法的参数必须明确指明参数类型。
  • Lambda 表达式的方法体允许由单一表达式或者多条语句组成,而匿名方法不允许单一表达式形式。

4.1 LINQ的基本操作符

  • Select()
  • Where()
  • OrderBy()
  • GroupBy()

4.1.1 基本查询操作符-获取数据 Select()

4.1.2 基本查询操作符-过滤数据 Where()

4.1.3 基本查询操作符-排序数据 OrderBy()

4.1.4 基本查询操作符-分组数据 GroupBy()

4.2 高级查询方法

4.2.1 聚合类查询方法 Count,Max/Min,Average

4.2.2 排序类查询方法 ThenBy

4.2.3 分区类查询方法 Take/TakeWhile Skip/SkipWhile

4.4.4 集合类查询方法 Distinct

4.4.5 生成类查询方法 Range Repeat

4.3 LINQ to SQL 示例

本系列文章所有实例代码GitEE地址:

https://gitee.com/jahero/mvc

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-12-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 浩Coding 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
.net 温故知新:【6】Linq是什么
这段代码使用Linq对List列表进行筛选、分组、排序等一系列操作展示了Linq的强大和便捷,那么我们为什么需要学习Linq?可以看到这样一堆逻辑只几行Linq很快就可以实现,如果要我们自己实现方法去处理这个List肯定是比较繁琐的。 Linq是什么?如下是官方文档对于Linq的描述:
SpringSun
2022/09/16
2.8K0
.net 温故知新:【6】Linq是什么
.NET3.5新特性,Lambda表达式
【原文地址】New “Orcas” Language Feature: Lambda Expressions 【原文发表日期】 Sunday, April 08, 2007 4:21 PM 上个月我开始了一个贴子系列,讨论作为Visual Studio和.NET框架Orcas版本一部分发布的一些新的VB和C#语言特性。下面是这个系列的前2篇贴子: 自动属性,对象初始化器,和集合初始化器 扩展方法 今天的贴子讨论另一个基础性的新语言特性:Lambda表达式。 什么是Lambda表达式? 随VS 2005
菩提树下的杨过
2018/01/22
1.8K0
.NET3.5新特性,Lambda表达式
.NET深入解析LINQ框架(一:LINQ优雅的前奏)
LINQ简称语言集成查询,设计的目的是为了解决在.NET平台上进行统一的数据查询。
王清培
2019/03/01
2K0
.NET深入解析LINQ框架(一:LINQ优雅的前奏)
LINQ初步
语言集查询(Language Integrated Query, LINQ)集成了C#编程语言中的查询语法,可以用同样的语法访问不同的数据源。LINQ提供了不同数据源的抽象层,可以使用相同的语法。
卡尔曼和玻尔兹曼谁曼
2019/01/25
1.8K0
LINQ初步
【深入浅出C#】章节 9: C#高级主题:LINQ查询和表达式
C#高级主题涉及到更复杂、更灵活的编程概念和技术,能够让开发者更好地应对现代软件开发中的挑战。其中,LINQ查询和表达式是C#高级主题中的一项关键内容,具有以下重要性和优势:
喵叔
2023/08/21
2.7K0
LINQ基础概述
介绍LINQ基础之前,首说一下LINQ 的历史和LINQ是什么,然后说一下学习 LINQ要了解的东西和 LINQ基础语法 LINQ 的历史 从语言方面的进化 –委托 –匿名方法 –Lambda表达式 –Linq查询表达式 上边这四个我会在下边一一解说 从时间方面的演进 –2004年 –2005年9月,C#2.0的PDC上发布 –2005年11月,C#2.0预览版 –2006年1月,VB8.0预览版 –2007年11月,.net 3.5发布 LINQ是什么 LINQ是语言级集成查询(Lan
lpxxn
2018/01/31
1.9K0
LINQ基础概述
.NET中那些所谓的新语法之四:标准查询运算符与LINQ
开篇:在上一篇中,我们了解了预定义委托与Lambda表达式等所谓的新语法,这一篇我们继续征程,看看标准查询运算符和LINQ。标准查询运算符是定义在System.Linq.Enumerable类中的50多个为IEnumerable<T>准备的扩展方法,而LINQ则是一种类似于SQL风格的查询表达式,它们可以大大方便我们的日常开发工作。因此,需要我们予以关注起来!
Edison Zhou
2018/08/20
2.2K0
.NET中那些所谓的新语法之四:标准查询运算符与LINQ
.NET深入解析LINQ框架(二:LINQ优雅的前奏)
例子说明:假设我有一个表示学生的对象类型还有一个表示学生集合的类型。学生集合类型主要就是用来容纳学生实体,集合类型提供一系列的方法可以对这个集合进行连续的操作,很常用的就是筛选操作。比如筛选出所有性别是女生的学生,然后再在所有已经筛选出来的女性学生的集合当中筛选出年龄大于20周岁的学生列表,再继续筛选来自江苏南京地区的学生列表等等这一系列的连贯操作。这样的处理方式我想是LINQ最为常见的,毕竟LINQ是为了查询而生,而查询主要就是面向集合类的数据。
王清培
2019/03/01
2.1K0
.NET深入解析LINQ框架(二:LINQ优雅的前奏)
[C#] 走进 LINQ 的世界
    技巧:《Linq To Objects – 如何操作字符串》 和 《Linq To Objects – 如何操作文件目录》
全栈程序员站长
2022/09/06
4.8K0
[C#] 走进 LINQ 的世界
C#3.0新增功能09 LINQ 基础07 LINQ 中的查询语法和方法语法
介绍性的语言集成查询 (LINQ) 文档中的大多数查询是使用 LINQ 声明性查询语法编写的。但是在编译代码时,查询语法必须转换为针对 .NET 公共语言运行时 (CLR) 的方法调用。 这些方法调用会调用标准查询运算符(名称为 Where、Select、GroupBy、Join、Max 和 Average 等)。 可以使用方法语法(而不查询语法)来直接调用它们。
张传宁IT讲堂
2019/09/17
4.1K0
C#3.0新增功能09 LINQ 基础07 LINQ 中的查询语法和方法语法
LINQ&EF任我行(二)–LinQ to Object (转)
(原创:灰灰虫的家http://hi.baidu.com/grayworm) LinQ to Objects是LinQ家庭的核心,其它的LinQ也使用了与LinQ to Objects相同的查询句法。最终编译器都是把LinQ句法翻译成扩展方法的链式表达式,同时把扩展方法中的lambda表达式转换成匿名类中的匿名方法,然后再把查询表达式编译成MSIL。 LinQ to SQL、LinQ to DataSets、LinQ to Entities和LinQ to XML则不是把查询表达式转换成MSIL,而是把查询表达式树转换成相应的特定查询语言。LinQ to SQL会生成T-SQL,LinQ to Entities会生成eSQL,LinQ to XML会生成XPath语句等。
全栈程序员站长
2021/07/13
2.5K0
.NET面试题系列[12] - C# 3.0 LINQ的准备工作
"为了使LINQ能够正常工作,代码必须简化到它要求的程度。" - Jon Skeet
s055523
2018/09/14
1.2K0
一步一步学Linq to sql(一):预备知识
  Linq to sql(或者叫DLINQ)是LINQ(.NET语言集成查询)的一部分,全称基于关系数据的 .NET 语言集成查询,用于以对象形式管理关系数据,并提供了丰富的查询功能,它和Linq to xml、Linq to objects、Linq to dataset、Linq to entities等组成了强大的LINQ。
aehyok
2018/09/11
9940
30分钟LINQ教程
      也就是说,在声明一个变量(并且同时给它赋值)的时候,完全不用指定变量的类型,只要一个var就解决问题了
liulun
2022/05/09
8270
[读书笔记]C#学习笔记六: C#3.0Lambda表达式及Linq解析
前言 最早使用到Lambda表达式是因为一个需求: 如果一个数组是:int[] s = new int[]{1,3,5,9,14,16,22}; 例如只想要这个数组中小于15的元素然后重新组装成一个
一枝花算不算浪漫
2018/05/18
8.6K0
C# 发展历史及版本新功能介绍
C# 1.0 版 回想起来,C# 1.0 版非常像 Java。 在 ECMA 制定的设计目标中,它旨在成为一种“简单、现代、面向对象的常规用途语言”。 当时,它和 Java 类似,说明已经实现了上述早
程序你好
2018/07/20
4.3K0
LINQ常用扩展方法、委托、Lambda、yield
 每一项数据都会经过predicate的测试,如果针对一个元素,predicate执行的返回值为true,那么这个元素就会放到返回值中。 Where参数是一个lambda表达式格式的匿名方法,方法的参数e表示当前判断的元素对象。参数的名字不一定非要叫e,不过一般lambda表达式中的变量名长度都不长。
鱼找水需要时间
2024/03/23
1540
·方法
  Lambda表达式是C#3.0引入的结构,主要是为了简化C#编程。学习其确实有点难理解,但是学会了用起来是真的舒服,主要是特别灵活。
vv彭
2022/05/10
7500
·方法
ASP.NET MVC5高级编程——(4)表单和HTML辅助方法
表单辅助方法、表单元素辅助方法、链接辅助方法、PartialView和 ChildAction方法。
浩Coding
2019/07/03
3.1K0
ASP.NET MVC5高级编程——(4)表单和HTML辅助方法
C# 语言中Lambda(拉姆达) 表达式介绍
Lambda 表达式是一种可用于创建 委托 或 表达式目录树 类型的 匿名函数 。 通过使用 lambda 表达式,可以写入可作为参数传递或作为函数调用值返回的本地函数。 Lambda 表达式对于编写
程序你好
2018/07/20
8.3K0
相关推荐
.net 温故知新:【6】Linq是什么
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档