Visual C Sharp 3.0 与 LINQ.ppt_第1页
Visual C Sharp 3.0 与 LINQ.ppt_第2页
Visual C Sharp 3.0 与 LINQ.ppt_第3页
Visual C Sharp 3.0 与 LINQ.ppt_第4页
Visual C Sharp 3.0 与 LINQ.ppt_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Visual C# 3.0 与 LINQ,1,C# 3.0 新特性 LINQ 介绍 LINQ to Objects LINQ to SQL LINQ to XML,2,C# 3.0 的新特性,局部变量类型 自动属性 对象和集合的初始化 匿名类型 扩展方法 Lambda 表达式 LINQ,3,局部变量类型,关键字 var,/ C# 2.0 int x = 5; string name = “Bart Simpson“; Dictionary data = new Dictionary(); int size = name.Length;,/ C# 3.0 var x = 5; var name = “Bart Simpson“; var data = new Dictionary(); var size = name.Length; var y = x; var keys = data.Keys; / Dictionary.KeyCollection,4,自动属性,public class Person / C# 2.0 private string _firstName, private string _lastName; private int _age; public string FirstName get return _firstName; set _firstName = value; public string LastName get return _lastName; set _lastName = value; public int Age get return _age; set _age = value; ,public class Person / C# 3.0 public string FirstName get; set; public string LastName get; set; public int Age get; set; ,5,对象初始化,/ C# 2.0 Person p = new Person(); p.FirstName = “Bart“; p.LastName = “Simpson“; p.Age = 12;,/ C# 3.0 Person p = new Person() FirstName = “Bart“, LastName = “Simpson“, Age = 12 ;,6,2008 Pavel Yosifovich,集合的初始化,/ C# 3.0 List people = new List(); people.Add(new Person() FirstName = “Bart“, LastName = “Simpson“, Age = 12 ); people.Add(new Person() FirstName = “Clark“, LastName = “Kent“, Age = 35 ); people.Add(new Person() FirstName = “Peter“, LastName = “Parker“, Age = 30 );,/ C# 3.0 var people = new List() new Person() FirstName = “Bart“, LastName = “Simpson“, Age = 12 , new Person() FirstName = “Clark“, LastName = “Kent“, Age = 35 , new Person() FirstName = “Peter“, LastName = “Parker“, Age = 30 ;,7,匿名类型,var people = new new FirstName = “Clark“, LastName = “Kent“, Age = 36 , new FirstName = “Peter“, LastName = “parker“, Age = 26 , new FirstName = “Bart“, LastName = “Simpson“, Age = 11 ; foreach (var i in people) Console.WriteLine(“0 1 (2)“, i.FirstName, i.LastName, i.Age); Console.WriteLine(people0.GetType().FullName); / ?,8,这个语言特性让我们可以定义内嵌的类型,而不需要显式地定义一个类型.换句话说,假设我们没有定义Person类,却要使用一个Person对象(即类型是匿名的)。我们可以使用上面提到的对象初始化语法,但不用指定类型名,扩展方法,public static class MyExtensions public static string UpperLower(this string str, bool upperFirst) StringBuilder newString = new StringBuilder(str.Length); for (int i = 0; i str.Length; i+) newString.Append(upperFirst ? char.ToUpper(stri) : char.ToLower(stri); upperFirst = !upperFirst; return newString.ToString(); ,string input = Console.ReadLine(); Console.WriteLine(“calling extension method for 0: 1“, input, input.UpperLower(true);,9,注意参数类型string前面有一个this关键词,这会告诉编译器这个特殊的扩展方法会增加给string类型的对象。我们就可以在string中调用这个成员方法,扩展方法可以使你来扩展一个已存在的类型,增加它的方法,而无需继承它或者重新编译。所以不像为对象写助手方法,扩展方法可以直接是对象自己的一部分,Lambda表达式,在C#2.0中引入了匿名方法,允许在需要委托的地方写一个代码块。匿名方法提供了函数式程序语言的能力,语法显得很简洁。Lambda表达式提供了一个更简洁的语法来写匿名方法。一个Lambda表达式就是一个参数列表(可以隐式类型),然后是一个=符号,然后是一个表达式或者一个语句块。,/ C# 3.0 MyDeleg IsPositive = num = num 0;,我们也可以使用新的Lambda表达式来写:,/ C# 2.0 delegate R MyDeleg(A arg); MyDeleg IsPositive = delegate(int num) return num 0; ;,10,LINQ 是什么?,为任何数据类型/数据源提供统一的编程模型 集合(Collections) 关系型数据库数据(Database Relational Data) XML 文件 其他 运用了更多的语法 数据相当于对象,11,LINQ Architecture,LINQ to Entities,LINQ To SQL,LINQ to XML,C# 3.0,VB 9.0,Others,LINQ To Dataset,LINQ To Objects,XML,Objects,Relational Data,.NET Language-Integrated Query (LINQ),12,LINQ 基本语法,基于扩展方法的语法 关键字 where, orderby, select, group, 辅助语法功能的使用 自动属性 匿名类型 对象的初始化,13,查询语法,查询表达式提供了一个语言集成的语法来查询,它特别像关系和层次查询语言比如SQL和XQuery。使用LINQ操作符(也就是from.where.select)写查询很方便,Visual Studio为它提供了很好的智能感知和编译时的检查支持。 当C#编译器遇到了一个查询语法表达式时,实际上它会被转化为使用扩展方法和Lambda表达式的方法调用。,var result = from p in Persons where p.FirstName.StartsWith(“B“) orderby p.LastName select new p.FirstName, p.LastName, p.Age;,var result = Customers.Where( p = p.FirstName.StartsWith(“B“) ) .OrderBy( p = p.LastName ) .Select( p = new p.FirstName, p.LastName, p.Age );,14,LINQ To Objects,与集合结合工作 实现了IEnumerable接口的任何对象 using System.Linq System.Core.Dll assembly,15,DEMO,LINQ TO OBJECTS,16,ADO.NET,SqlConnection conn = new SqlConnection(“.“); SqlCommand cmd = conn.CreateCommand(); cmd.CommandText = “ SELECT * FROM Vehicles WHERE Model = Model“; cmd.Parameters.Add(“Model“, “Mazda 3“); SqlDataReader r = cmd.ExecuteReader(); while ( r.HasRows ) Console.WriteLine(r“Number“ + r“Year“); ,Application,关系型数据库,无智能感知,无编译时检查,松散的绑定参数,无类型的结果,17,LINQ To SQL,DataContext 类型 自定义属性 (Table, Column) 不仅仅是 “Query” 可以使用存储过程(stored p

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论