Visual Studio 2008的改进,我只是简单的进行一下提示,其实每个模块还有很多具体的细节需要进行研究,欢迎排砖。
1. 隐式类型的本地变量和数组 var
// anon is compiled as an anonymous type
var anon = new { Name = "Terry", Age = 34 };
// a is compiled as int[]
var a = new[] { 0, 1, 2 };
下面的集合初始值设定项使用对象初始值设定项来初始化在前面
的一个示例中定义的Cat 类的对象。请注意,各个对象初始值设
定项被分别括在大括号中,并且用逗号分隔。
List<Cat> cats = new List<Cat>
{
new Cat(){ Name="Sylvester", Age=8 },
new Cat(){ Name="Whiskers", Age=2},
new Cat() { Name="Sasha", Age=14}
};
匿名类型
var v = new { Amount = 108, Message = "Hello" };
2. 提供通过静态类定义静态方法扩展对象方法
Public Static class Extentsions{
Public string exestr(this string str,int a)
{
Stringbuilder sb=new stringbuilder();
For(int i=0;i<a;i++)
{
Sb.append(str);//重复a次
}
Return sb.tostring();
}
}
3. Lambda 表达式
“Lambda 表达式”是一个匿名函数,它可以包含表达式和语句,
并且可用于创建委托或表达式目录树类型。
– 所有 Lambda 表达式都使用 Lambda 运算符 =>,该运算符读为
“goes to”。该Lambda 运算符的左边是输入参数(如果有),
右边包含表达式或语句块。Lambda 表达式x => x * x 读作“x
goes to x times x”
delegate int del(int i);
del myDelegate = x => x * x;
int j = myDelegate(5); //j = 25
采用Lambda表达式
var results = people.Where(p => p.LastName == "White");
(input parameters) => expression
4. 什么是LINQ?
LINQ是语言集成查询(Language Integrated Query)的简称,是Visual Studio 2008 和.NET Framework 3.5 版中一项突破性的创新,它在对象领域和数据领域之间架起了一座桥梁,支持各种数据源。
查询基本操作(查询关键字)
– from子句
– where子句
– select子句
– group子句
– into子句
– orderby子句
– join子句
– let子句
Ling特点
- 查询变量本身只是存储查询命令。实际的查询执行会延迟到在foreach 语句中循环访问查询变量时发生。此概念称为“延迟执行”
// Query execution.
foreach (int num in numQuery)
{
Console.Write("{0,1} ", num);
}
- 强制立即执行
• 执行聚合函数(Count、Max、Average、First)
• 调用ToList(TSource>) 或ToArray(TSource>) 方法缓存结果
//queryAllCustomers is an IEnumerable<Customer>
var queryAllCustomers = from cust in customers
select cust;
5. 什么是LINQ to Objects?
直接对任意IEnumerable 或Ienumerable(T) 集合使用 LINQ 查询,
无需使用中间LINQ 提供程序或API,如LINQ to SQL 或LINQ to XML。
可以使用 LINQ 来查询任何可枚举的集合,如List(T)、Array 或Dictionary(T)。该集合可以是用户定义的集合,也可以是 .NET Framework API 返回的集合
• LINQ和字符串
• LINQ和反射
• LINQ和文件目录
• LINQ和ArrayList
6. LINQ to DataSet
获取数据源
• 实现IEnumerable(T)泛型接口的数据源可以通过LINQ 进行查询。对DataTable 调用 AsEnumerable 将返回实现泛型IEnumerable(T)接口的对象,作为LINQ to DataSet 查询的数据源
– 创建查询
• 此查询变量不执行任何操作,也不返回任何数据;它只存储查询信息。 创建查询后必须执行该查询以检索任何数据
– 执行查询
• 查询的执行将推迟到在 foreach 或 For Each 循环中环访问查询变量之后进行。这称为“延迟执行”与返回一系列值的延迟查询相反,返回单一实例值的查询将立即执行。Count、Max、Average 和 First 是一些单一实例查询的示例
DataSet ds = new DataSet();
FillDataSet(ds);//填充数据
DataTable products = ds.Tables["Product"];
IEnumerable<DataRow> query = from product in products.AsEnumerable()
select product;
Console.WriteLine("Product Names:");
foreach (DataRow p in query)
{
Console.WriteLine(p.Field<string>("Name"));//循环输出字段值
}
Field 方法提供对 DataRow 列值的访问,而 SetField 设置 DataRow中的列值。
• Field 方法和SetField 方法都可以处理可以为null 的类型,因此不必像前面的示例那样检查 Null 值。
• 这两种方法也都是泛型方法,因此不必强制转换返回类型
7. 语言集成查询(LINQ)之LINQ to SQL
8. 语言集成查询(LINQ)之LINQ to XML入门篇
9. 新设计视图和 CSS 设计工具、新增js智能感知、Ajax智能感知
10. 数据访问功能提升
TableAdapterManager.UpdateAll(TypedDataset)
TableAdapter功能的提升