training i:.net 3.5 & c# 3.0 & linq

16
——.NET 3.5 & C# 3.0 & LINQ 朱朱 2010 朱 9 朱 .NET 3.5 朱朱朱朱(一)

Upload: powerzhuye

Post on 10-May-2015

1.913 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Training i:.net 3.5 & c# 3.0 & linq

——.NET 3.5 & C# 3.0 & LINQ

朱晔2010 年 9 月

.NET 3.5 系列培训(一)

Page 2: Training i:.net 3.5 & c# 3.0 & linq

内容概要 .NET 3.5 介绍 C# 3 . 0新特性 LINQ 介绍 LINQ TO OBJECTS 详解 LINQ TO XML 介绍 LINQ TO DATASET 介绍

Page 3: Training i:.net 3.5 & c# 3.0 & linq

.NET 3.5 介绍 .NET发展历程

理解 .NET CLR C# ASP.NET VS 的关系

.NET 3.5 的构成和新特性 .NET3.0 = .NET框架2.0 with SP1 +

WCF/WPF/WF/WCS。 .NET 3.5 = .NET框架2.0 with SP2 + ASP.NET

AJAX + LINQ + C# 3.0 + WCF/WPF/WF(WFF)/WCS 2.0

Page 4: Training i:.net 3.5 & c# 3.0 & linq

.NET 3.5 介绍 VS2008 新特性

多定向支持 智能感知窗口透明化 JS 智能感知 JS 调试支持 WEB 设计器 CSS 设计器 代码格式化和度量 …………

Page 5: Training i:.net 3.5 & c# 3.0 & linq

C# 3.0 新特性 自动属性

原来的写法 现在的写法 可以使用访问修饰符 不换行的写法 观察编译后的代码

对象初始化器 原来的写法 现在的写法 嵌套 省略构造方法括号 注意 VS 的智能提示 观察编译后的代码

Page 6: Training i:.net 3.5 & c# 3.0 & linq

C# 3.0 新特性 集合初始化器

原来的写法(使用对象初始化器) 现在的写法 对于 Dictionary 的写法 自定义的类支持集合初始化器 观察编译后的代码

隐含类型局部变量 现在的写法 可以表示 null 但是需要类型 不建议到处使用,只建议针对匿名类型使用 错误的使用方法(方法参数,方法返回值,字段) 观察编译后的代码

Page 7: Training i:.net 3.5 & c# 3.0 & linq

C# 3.0 新特性 匿名类型

原来的写法(需要先定义类再初始化) 现在的写法(配合类型推断和对象初始化器) 生成相同类型的条件(属性名字类型个数次序都一致) override 了 Equals() 方法 观察编译后的代码

扩展方法 使用方法(静态类,静态方法, this ) 扩展 BCL 既有类型(包括接口) 结合泛型以及类型推断的扩展方法 扩展方法妙用 http://www.cnblogs.com/ldp615/archive/

2009/08/07/1541404.html

Page 8: Training i:.net 3.5 & c# 3.0 & linq

C# 3.0 新特性 Lambda 表达式

有名方法匿名方法到 Lambda 表达式 Lambda 表达式的几种省略形式 Lambda 表达式用于方法延迟执行 Lambda 表达式与 out 复杂的 Lambda 表达式

分部方法 使用方法(在分部类中) 如果没有实现,则移除声明以及所有调用(因此只能是 void

返回值) 如果有实现,则是一个普通私有方法

Page 9: Training i:.net 3.5 & c# 3.0 & linq

C# 3.0 新特性 查询句法

实现和结构 观察编译后的代码 选择查询句法还是查询

方法

C# 3.0 和 C# 2.0 的对比 一行代码和五十行代码

Page 10: Training i:.net 3.5 & c# 3.0 & linq

C# 3.0 新特性

Page 11: Training i:.net 3.5 & c# 3.0 & linq

LINQ 介绍

Page 12: Training i:.net 3.5 & c# 3.0 & linq

LINQ 介绍 一个从 XML 读取数据保存到数据库的 DEMO 一个夸张的 LINQ DEMO LINQ PROVIDERS

LINQ to CSV LINQ to Amazon LINQ to Active Directory LINQ to Bindable Sources (SyncLINQ) LINQ to C# project LINQ to Continuous Data (CLinq) LINQ to CRM LINQ To Geo - Language Integrated Query for Geospatial Data LINQ to Excel LINQ to Expressions (MetaLinq) LINQ Extender (Toolkit for building LINQ Providers) LINQ to Flickr LINQ to Google LINQ to Indexes (LINQ and i40) LINQ to IQueryable (Matt Warren on Providers) LINQ to JSON LINQ to LDAP LINQ to Nhibernate LINQ to JavaScript LINQ to LLBLGen Pro LINQ to Lucene LINQ to Metaweb(freebase) LINQ to MySQL, Oracle and PostgreSql (DbLinq) LINQ to Ncover LINQ to Opf3 LINQ to Parallel (PLINQ) LINQ to RDF Files LINQ to Sharepoint LINQ to SimpleDB LINQ to Streams LINQ to Twitter LINQ to WebQueries LINQ to WMI LINQ To WIQL LINQ to XtraGrid

Page 13: Training i:.net 3.5 & c# 3.0 & linq

LINQ TO OBJECTS 详解API 限制 : Where, OfType 投影 : Select, SelectMany 排序 : OrderBy, ThenBy, OrderByDescending, ThenByDescending,

Reverse 连接 : Join, GroupJoin 分组 : GroupBy 组 : Zip (.net 4.0), Distinct, Union, Intersect, Except,Concat 聚合 : Aggregate, Count, LongCount, Sum, Min, Max, Average 分区 : Take, Skip, TakeWhile, SkipWhile 转换 : ToSequence, ToArray, ToList, ToDictionary, ToLookup, Cast 相等 : SequenceEqual 元素 : First, FirstOrDefault, Last, LastOrDefault, Single, SingleOrDefault,

ElementAt, ElementAtOrDefault, DefaultIfEmpty 生成 : Range, Repeat, Empty 限定 : Any, All, Contains

Page 14: Training i:.net 3.5 & c# 3.0 & linq

LINQ TO OBJECTS 详解 LINQ TO OBJECTS 给我们带来了什么体验?

链式调用(扩展方法 + 返回 this ) 声明式编程(纯业务无技术) 延迟执行

执行流程分析 复杂查询的查询句法 扩展自定义方法 常见应用的 LINQ TO OBJECTS 使用范例

IO 反射 字符串

扩展学习 101 个例子

http://msdn.microsoft.com/en-us/vcsharp/aa336746.aspx LINQPAD

Page 15: Training i:.net 3.5 & c# 3.0 & linq

LINQ TO DATASET 介绍 查询单表 根据关系查询多表

Page 16: Training i:.net 3.5 & c# 3.0 & linq

LINQ TO XML 介绍 查询 XML

从字符串读取 XML 从文件读取 XML 查询元素和属性 查询后代和前辈 XPATH 查询

创建 XML 声明方式 保存

修改XML 修改值 替换元素 删除元素