引言——Model 实现数据访问
1.1 LINQ
LINQ( Language Integrated Query )——语言集成查询,.NET Framework 3.5 中出现的技术,其命名空间(.NET Framework):System.Linq;
LINQ 是一组语言特性和API,使得开发人员可以使用统一的方式编写各种查询。查询的对象包括XML、对象集合、SQL Server 数据库等等。
1.2 LINQ要解决的问题
长期以来,开发社区形成以下格局:
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 表达式的功能子集,但是两者存在以下区别:
4.1 LINQ的基本操作符
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