.NET基础学习(LINQ)
什么是LINQ
LINQ(发音为link)代表语言集成查询(Language Integrated Query)
详细见LINQ
匿名类型
第一个成员初始化器是赋值形式,第二个是成员访问表达式,第三个是标示符形式,如下实例所示:
1 string Sex = "男";
2 var person = new { Age = 24, SimpleClass.Name, Sex };
3 Console.WriteLine("{0},Sex{1},Age {2}",person.Name,person.Sex,person.Age);消除行号
运行结果:
注意标示符形式和访问表达式必须定义在匿名类型申明之前,Sex是一个局部变量,Name是类SimpleClass的静态字段。
尽管在代码中看不到匿名类型,对象浏览器却能看到。如果编译器遇到了另一个具有相同参数名、相同引用类型名和相同顺序的匿名类型,它会重用这个类型并直接创建新的实例,而不会创建新的匿名类型。
查询语法和方法语法
查询语法(query syntax)是声明形式的,看上去和SQL的语句很相似。查询语法使用查询表达式书写。
方法语法(method syntax)是命令形式,它的使用是标准的方法调用。方法是一组叫做标准查询运算符的方法。
在一个查询中也可以组合以上两种形式。
示例代码如下所示:
1 var query1 = from n in Enumerable.Range(1, 10)
2 where n < 8
3 select n;
4 Console.Write("查询语法得到结果:");
5 foreach (var v in query1) Console.Write("{0}\t",v);
6
7 var query2 = Enumerable.Range(1, 8).Where(n => n < 8);
8 Console.WriteLine("");
9 Console.Write("方法语法得到结果:");
10 foreach (var v in query2) Console.Write("{0}\t", v);
11
12 int count = (from n in Enumerable.Range(1, 10)
13 where n < 8
14 select n).Count();
15 Console.WriteLine("");
16 Console.WriteLine("两种方式的组合:{0}", count);运行结果:
查询表达式的结构
1、from子句
from子句指定了要作为数据源使用的数据集合。它也引入了迭代变量,迭代变量有序表示数据源的每一个元素。
1 int[] arr = { 1, 5, 9, 8, 45, 23, 26, 14, 7, 8, 9 };
2 var query = from n in arr //(n->迭代变量)
3 where n < 10 //使用迭代变量
4 select n; //使用迭代变量
5 foreach (var v in query) Console.Write("{0}\t",v);
6 Console.WriteLine("");消除行号
运行结果:
相关新闻>>
- 发表评论
-
- 最新评论 更多>>