《程序设计Csharp程序设计 (55).pdf》由会员分享,可在线阅读,更多相关《程序设计Csharp程序设计 (55).pdf(22页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、C#程序设计 Programming in C#LINQ概述 C#程序设计程序设计 1、LINQ的功能 2、LINQ的使用方法 1.什么是LINQ?3 在程序中的数据和数据库的数据相反,保存在类对象或结构中的数据差异很大。没有通用的查询语言从数据结构中获取数据。1.什么是LINQ?4 LINQ,语言集成查询(Language Integrated Query)是一组用于c#和Visual Basic语言的扩展。它允许编写C#或Visual Basic代码以查询数据库相同的方式操作内存数据。使用LINQ,程序员可以从数据库、程序对象的集合以及XML文档等查询数据。1.什么是LINQ?5 如下是L
2、INQ使用示例。在这段代码中,被查询的数据源是简单的int数组。语句中查询的定义就是from和select关键字。查询在最后的foreach语句中进行。intint scoresscores =newnew intint 9797,9292,8181,6060 ;IEnumerableIEnumerable scoreQueryscoreQuery =from scorefrom score inin scoresscores wherewhere scorescore 8080 select scoreselect score;foreachforeach (intint i i inin
3、scoreQueryscoreQuery)ConsoleConsole.WriteWrite(i i +););1.什么是LINQ?6 如下是LINQ使用示例。在这段代码中,被查询的数据源是简单的int数组。语句中查询的定义就是from和select关键字。查询在最后的foreach语句中进行。intint scoresscores =newnew intint 9797,9292,8181,6060 ;IEnumerableIEnumerable scoreQueryscoreQuery =from scorefrom score inin scoresscores wherewhere s
4、corescore 8080 select scoreselect score;foreachforeach (intint i i inin scoreQueryscoreQuery)ConsoleConsole.WriteWrite(i i +););1.什么是LINQ?7 如下是LINQ使用示例。在这段代码中,被查询的数据源是简单的int数组。语句中查询的定义就是from和select关键字。查询在最后的foreach语句中进行。intint scoresscores =newnew intint 9797,9292,8181,6060 ;IEnumerableIEnumerable s
5、coreQueryscoreQuery =from scorefrom score inin scoresscores wherewhere scorescore 8080 select scoreselect score;foreachforeach (intint i i inin scoreQueryscoreQuery)ConsoleConsole.WriteWrite(i i +););2.LINQ提供程序 8 LINQ可以和各种类型的数据源一起工作,比如SQL数据库、XML文档等等。对于每一种数据源类型,在其背后一定有根据该数据源类型实现LINQ查询的代码模块,这些代码模块被叫做L
6、INQ提供程序(provider)。2.LINQ提供程序 9 (1)微软提供了常见数据源类型的一些LINQ提高程序。2.LINQ提供程序 10 (2)可以使用任何支持LINQ的语言来查询有LINQ提供程序的数据源类型;(3)第三方在不断提供针对各种数据源类型的LINQ提供程序。3.LINQ的优点 11 从技术角度而言,LINQ定义了大约40个查询操作符,如select、from、in、where以及order by(C#中)。使用这些操作符可以编写查询语句。这些查询可以基于很多类型的数据,每个数据类型都需要一个单独的LINQ类型。3.LINQ的优点 12 LINQ 提供了一条更常规的途径即给.
7、Net Framework添加一些可以应用于所有信息源(all sources of information)的具有多种用途(general-purpose)的语法查询特性(query facilities),这是比向开发语言和运行时(runtime)添加一些关系数据(relational)特性或者类似 XML 特性(XML-specific)更好的方式。LINQ包含 DLinq 和 XLinq。3.LINQ的优点 13 Linq是在.NET Framework 3.5 中出现的技术,所以在创建新项目的时候必须要选3.5或者更高版 本,否则无法使用。选择3.5或更高版本的.NET Framew
8、ork之后,创建类文件中会自动包含System.Linq 的命名空间。3.LINQ的优点 14 LINQ的使用优点如下:(1)无需复杂学习过程即可上手;(2)编写更少代码即可创建完整应用;(3)更快开发错误更少的应用程序;(4)无需求助奇怪的编程技巧就可合并数据源;3.LINQ的优点 15 (5)能够大幅减少过程控制语句的代码块,使代码的可读性和可维护性大幅提高;(6)任何对象或数据源都可以定制实现Linq适配器,为数据交互带来真正方便。4.匿名类型 16 匿名类型借助var关键字进行创建,可以把它理解为类型占位符,它并不是C#中的一种基本类型。它能在你编写程序的时候,自动计算出等式右边的类型
9、,而且支持智能感知。匿名类型的创建语法如下所示:newnew FieldPropFieldProp=InitExpr,FieldPropInitExpr,FieldProp=InitExpr,InitExpr,.4.匿名类型 17 如下为匿名类型的创建和使用示例:static voidstatic void MainMain(stringstring argsargs)/匿名类型必须使用匿名类型必须使用varvar关键字作为变量类型。关键字作为变量类型。var studentvar student =newnew LNameLName=Jones=Jones,FName,FName=Mary=
10、Mary,Age,Age=1919,Major,Major=Histroy;=Histroy;ConsoleConsole.WriteLineWriteLine(0 0 11,Age:,Age:22,Major:,Major:33,student,student.FName,studentFName,student.LName,studentLName,student.Age,studentAge,student.MajorMajor););4.匿名类型 18 使用匿名类型需要注意:(1)匿名类型只能和局部变量配合使用,不能用于类成员;(2)由于匿名类型没有名字,所以必须使用var关键词作为变
11、量类型。4.匿名类型 19 当编译器遇到匿名类型的对象初始化时,创建了一个有名字的新类类型。对于每一个成员初始化器,编译器推断其类型并在新的类中创建这个类型的私有变量,然后创建用于访问这个变量的读写属性。属性和成员初始化器具有相同的名字。匿名类型被构造后,编译器创建了这个类型的对象。4.匿名类型 20 对于匿名类型的初始化还可以采用标识符和成员访问表达式的形式,这两种形式叫做投影初始化器。如下示例所示:var var studentstudent =newnew AgeAge=1919,major,other,major,other.NameName;4.匿名类型 21 如果编译器遇到了另一个具有相同参数名、相同引用类型名和相同顺序的匿名类型,它会重复这个类型并直接创建新的实例,而不会创建新的匿名类型。结束