1. 能做什么,将int数组中大于20的元素排序输出:
int[] values = { 30, 5, 99, 77, 102, 8, 12, 35 };
var result = from item in values
where item > 20
orderby item
select item;
2. LINQ(读音link, .Net3.0新特性):Linq To SQL(过时)、Linq To Object、Linq To XML、Linq To entity,目的:以统一的方式对数据进行操作。看起来非常像SQL语句,但是和SQL无关。
3. var关键字,var类型用来简化类型的声明,var i = 2,并不说明i是无类型的,编译器会自动根据右边的值推断(这叫类型推断)var代表的值。var只能用在语句中,不能用在返回值、参数列表等场合。
4. 匿名类型,var s = new { Name = "tom", Age = 30 },在后面的代码中就能用s.Name 这样的方式引用属性了。匿名类型不是动态类型,最终仍然是编译成一个类,用Reflector查看。如果编译器遇到了一个属性完全一致的匿名类型,则会重用这个类型,而不是每次都创建一个新的类型。也是类型推断的一种表现。
5. string name = "lrj"; int age = 18;var p = new { name,age, name.Length};默认命名属性。
6. 如果推断的属性名冲突,则必须显式指定var p = new { name.Length ,Length2="C#".Length}
7. 如果写程序的时候调用不了Linq的方法,就看看是否using了system.Linq。
附加:
1. using System.Linq; //使用Linq的时候必须using System.Linq;
2. object可以指向任何类型。
3. linq最终都编译成委托,所以当然可以调用.net函数。
4. string.Join后面要求跟的是数组格式,所以遇到数列时可以用ToArray转换成数组。
5. 例:
Table1TableAdapter adapter = new Table1TableAdapter();
/*
强类型DataSet与Var.Database1DataSet.Table1DataTable dt = adapter.GetData();
强类型DataSet与Var.Database1DataSet.Table1Row row = dt[0];
*/
var dt = adapter.GetData();
var row = dt[0];
var aa = row.aa;