LINQ可以和各种类型的数据源一起工作,比如SQL数据库,XML文档等,然而,必须要有实现LINQ查询的代码模块. 这些代码模块叫做LINQ提供程序.
匿名类
var student = new {Lname="hallen",sex="nv",Age=10,Major="history" };
Console.WriteLine("{0} {1} {2} {3}",student.Age,student.Lname,student.Major,student.sex);
Console.ReadKey();
匿名类型只能和局部变量配合使用, 不能用于类成员
由于匿名类型没有名字, 我们必须使用var关键词作为变量类型
from子句
from子句指定了要作为数据源使用数据集合,也引入了迭代变量. 有关from子句的要点:
迭代变量有序表述数据源的每一个元素
from子句的语法如下:
Type是结合中元素的类型,这是可选的,因为编译器可以从集合来推断类型
item是迭代变量的名字
items是要查询的集合的名字, 集合必须是可枚举的
From Type Item in Items
foreach 和 from子句的不同点:
foreach 语句明确指定集合中的项需要按照次序,从第一个到最后一个. 而from子句只是声明性地规定了必须考虑集合中的每一个项,不规定其顺序
join 子句
联结操作接受两个集合然后创建一个临时的对象集合, 每一个对象包含原始集合对象中的所有字段
使用连接来结婚两个或更多集合中的数据
join Identifier in Collection2 on Field1 equals Field2
where 子句
let子句
let子句接受一个表达式的运算并且把它赋值给一个需要在其他运算中使用的标识符
let Identifier = Expression
有关where需要了解如下事项:
只要实在from..let..where部分中,查询表达式可以有任何多个where子句
一个项必须满足where子句才能避免在之后被过滤
orederby子句
接受一个表达式并根据表达式一次返回结果项
使用匿名类型存储LINQ查询结果
匿名类 :
既支持简单类型也支持复杂类型, 简单类型必须是一个非空初始值,复杂类型则是一个以new开头的初始化项
匿名类型的属性是只读的,没有属性设置器,它一旦被初始化就不可更改
如果两个匿名类新的属性值相同,那么就认为两个匿名类型相等
匿名类型可以在循环中用作初始化器
匿名类型支持智能感知
匿名类型可以拥有方法