LINQ概念
全称是语言集成查询(Language Integrated Query),他为查询各种不同的数据源提供给了一个统一的接口。通过这个接口,查询各种数据源可以使用近乎一致的方式和语法。
既然是一个接口,就有接口的调用者和接口的实现者(或者叫做提供者Provider)。接口的调用者通常是各式各样的应用程序,对他们来说,接口的使用方式是一致的;对于接口的实现者,则根据各种不同的数据源有着各自不同的实现。根据数据源的不同,LINQ也产生了不同的分支,比如LINQ to Object、LINQ to SQL、LINQ to XML、 LINQ to Entities、 LINQ to Excel等。
LINE各分支的关系
预备知识(与LINQ有关的语言特性)
隐式类型
1. 由来
在隐式类型出现之前
我们在生命一个变量的时候,
总是要为一个变量指定他的类型,
甚至在foreach一个集合的时候,
也要为遍历集合的元素,指定变量的类型
隐式类型的出现,让程序员不用在做这个工作了
2. 使用方法:一个var解决问题
var name = "Celien"; //string name="Celine";
var age = 24; //int age=24;
//var sex; //错误:隐式类型的局部变量必须对它赋值
//sex = "girl";
var sex = "girl"; //string sex="girl";
var person = new Person();//Person person=new Person()
匿名类型
由来
匿名类型允许开发者不必预先定义类型,就创建类型的实例使用方法
var cuteDog = new
{
Name = "Tom",
age = 1,
Favorites = new[] { "play", "eat", "sleep" }
};
new关键字之后就直接为对象定义了属性,并且为这些属性赋值
而且,对象创建出来之后,在创建对象的方法中,还可以畅通无阻的访问对象的属性
自动属性
当我们创建一个类的时候,类中的一些私有变量对我们一点用处也没有,比如对象关系映射中的实体类,这时候我们可以利用自动实现的属性解决这个问题
class Person {
private string _name;
private int _age;
public string Name {
get { return _name; }
set { _name = value; }
}
public int Age {
get { return _age; }
set { _age = value; }
}
//以上的属性也可以按下边的方式呈现——C#3.0之后引入自动实现属性
public int id { get; set; }
public string Title { get; set; }
}
总结
下一篇会继续总结和LINQ有关的关键技术:扩展方法、匿名方法和Lambda表达式