220 likes | 465 Views
LINQ. 通用和便利的信息查询方式. http://rippleyong.cnblogs.com. 简介. 面向对象 (OO) 编程技术 .NET Language Integrated Query (LINQ) :采用通用方案来解决各种信息源的访问与整合问题 语言集成查询使得 查询表达式 能够得益于丰富的元数据、编译时语法检查、静态输入和智能感知. Language Integrated Query. LINQ 表达式. Dim words as String() = _
E N D
LINQ 通用和便利的信息查询方式 http://rippleyong.cnblogs.com
简介 • 面向对象 (OO) 编程技术 • .NET Language Integrated Query (LINQ):采用通用方案来解决各种信息源的访问与整合问题 • 语言集成查询使得查询表达式 能够得益于丰富的元数据、编译时语法检查、静态输入和智能感知
LINQ表达式 Dim words as String() = _ {"hello", "wonderful", "linq", "beautiful", "world“} Dim shortWords = _ From word In words _ Where word.Length > 5 _ Select word
标准查询运算符 • “标准查询运算符”是组成语言集成查询 (LINQ) 模式的方法。 • 实现了 IEnumerable(Of (T) 接口或 IQueryable(Of (T))接口。标准查询运算符提供了包括筛选、投影、聚合、排序等功能在内的查询功能
标准常用查询运算符 • 筛选数据: Where,OfType • 投影运算: Select, SelectMany • 对数据进行排序: OrderBy, ThenBy • 数据分区: GroupBy • 限定符运算: Any, All • 数据分区: Take, Skip, TakeWhile, SkipWhile • Set 操作: Distinct, Union, Intersect, Except • 聚合运算: Count, Sum, Min, Max, Average • 转换数据类型: ToArray, ToList, ToDictionary
LINQ执行 • 确立数据源 • 创建查询 • 执行查询
DEMO1 LINQ To Objects
VB9-隐式类型本地变量(Local Type Inference ) Dim Number = 31719 Dim MyName = "Kong“ Dim Area = 1.9 Dim aUser = New User
VB9-对象初始值设置项(Object Initializers) Public Class User Public FirstName As String Public LastName As String Public Age As Integer Public Sub New(ByVal lastName As String) _LastName = lastName End Sub End Class Dim user= New User With _ {.Age = 30, .FirstName = "Yong", .LastName = "Kong"} Dim user2 = New User("Kong") With _ {.Age = 8, .FirstName = "Yong}
VB9-匿名类型(Anonymous Types) Dim user= New With _ {.Age = 30, .FirstName = "Yong", .LastName = "Kong"}
VB9-扩展方法(Extension Mehtods) <System.Runtime.CompilerServices.Extension()> _ Module UserHelper <System.Runtime.CompilerServices.Extension()> _ Public Function GetUserName(ByVal user As User) As String Return String.Format("your Name:{0} {1}", _ user.FirstName ,user.LastName) End Function End Module • 参数它表明了扩展方法与类之间的关系,这个参数是什么类型,这个方法就会被扩展到对应类型的实例上. Dim user = New User("Kong", "Kong") With {.Age = 8} Dim userName = user.GetUserName() • 参数:调用方法的参数总比扩展方法的参数少1个,因为扩展方法的第1个参数,用于确定扩展方法与要扩展的类之间的关系
VB9-Lambda表达式(Lambda Expressions) • 简单的Lambda表达式 Dim lambda1 = Function(x) x + 1 ' Implicitly typed Dim lambda2 = Function(x As Integer) x + 1 ' Explicitly typed Dim lambda3 = Function(x, y) x * y ' Multiple parameters Dim lambda4 = Function() 1 ' No parameters • 泛型委托 Dim upperImplicit As Func(Of String, String) = Function(s) s.ToUpper()
LINQ To SQL-介绍 • LINQ to SQL 是 .NET Framework 3.5 版的一个组件,提供了用于将关系数据作为对象管理的运行时基础结构。 • 在 LINQ to SQL 中,关系数据库的数据模型映射到用开发人员所用的编程语言表示的对象模型。 • 当应用程序运行时,LINQ to SQL 会将对象模型中的语言集成查询转换为 SQL,然后将它们发送到数据库进行执行。当数据库返回结果时,LINQ to SQL 会将它们转换回您可以用您自己的编程语言处理的对象。
LINQ To SQL-重要概念 • 数据上下文(DataContext) • System.Data.Linq命名空间下的重要类型,用于把查询句法翻译成SQL语句,以及把数据从数据库返回给调用方和把实体的修改写入数据库 • DataContext提供了以下一些使用的功能: • 以日志形式记录DataContext生成的SQL • 执行SQL(包括查询和更新语句) • 创建和删除数据库 • DataContext是实体和数据库之间的桥梁 • 实体类(Entity Classes)
DEMO 2 LINQ To SQL
LINQ To XML-介绍 • LINQ to XML 经过了重新设计,是最新的 XML 编程方法。 • 它提供文档对象模型 (DOM) 的内存文档修改功能,支持 LINQ 查询表达式。 尽管这些查询表达式在语法上与 XPath 不同,但它们以更加类型化的方式提供类似的功能。
LINQ To XML-重要概念 • XDocument 类 • 包含有效的 XML 文档所需的信息。 其中包括 XML 声明、处理指令和注释 • XElement 类 • 表示一个 XML 元素。 可以使用该类创建元素;更改元素内容;添加、更改或删除子元素;向元素中添加属性;或以文本格式序列化元素内容。 • XAttribute 类 • 属性是与元素关联的名称/值对。 XAttribute 类表示 XML 属性。
DEMO 3 LINQ To XML
LINQ学习工具 • LINQPad :LINQPad 是一个很好的学习LINQ的工具,LINQPad 是完全免费的,无需安装, 《C# 3.0 in a Nutshell》一书中200个示例 • VLinq :Visual Linq Query Builder(LINQ可视化查询编辑器)作为Visual Studio 2008的一个插件,可以帮助我们在程序中创建LINQ to SQL查询表达式,支持C#和VB两种语言
LINQ资源 • LINQ in Action 电子书:作者:Fabrice Marguerie, Steve Eichert, Jim Wooley 网址: http://linqinaction.net • The LINQ Project(LINQ 项目)站点位于MSDN 上,提供了有关LINQ 的一般新闻和信息。 • Visual Basic Developer Center(Visual Basic 开发人员中心),提供了有关结合使用LINQ 和Visual Basic 的最新新闻。 • C# Developer Center(C# 开发人员中心),提供了有关C# 3.0 规范的最新版本及其他信息。 • LINQ forum(LINQ 论坛)位于MSDN 上,是提出有关LINQ 的问题的最佳地方。 • 白皮书提供了指向提供有关LINQ 的其他信息的白皮书的链接。