LINQ(Language Intergrated Query,语言集成查询)在C#编程语言中集成了查询语法,可以用相同的语法访问不同的数据源
1. LINQ概述
1.1 LINQ查询
1. 查询表达式必须以from子句开头,以select或group子句结束,在这两个子句之间,可以使用where,orderby,join,let和其他from子句
var query = from r in Racer.ToListRacersInfo()
where r.name == "aaa"
orderby r.age descending
select r;
1.2 扩展方法
使用Enumerable类中的扩展方法Where(), OrderByDescending()和Select()。这些方法都返回IEnumerable<Source>
var cham = new List<Racer>();
IEnumerable<Racer> brazcham = cham.Where(r =< r.name == "aaa").
OrderByDescending(r =< r.age).
Select(r =< r);
1.3 推迟查询的执行
2. 标准的查询操作符
下面查询要用的数据源:
//定义一个Student类
public class Student
{
public int Id;
public string Name;
public string Gender;
public int Age;
}
//定义一个 Person类
public class Person
{
public int Num;
public double salary;
public string address;
public int worktime;
}
List<Student> students = new List<Student>();
students.Add(new Student() { Id = 1, Name = "张三", Gender = "男", Age = 23 });
students.Add(new Student() { Id = 2, Name = "李四", Gender = "女", Age = 27 });
students.Add(new Student() { Id = 3, Name = "王五", Gender = "男", Age = 21 });
students.Add(new Student() { Id = 4, Name = "赵六", Gender = "女", Age = 25 });
students.Add(new Student() { Id = 3, Name = "老王", Gender = "男", Age = 21 });
students.Add(new Student() { Id = 4, Name = "麻子", Gender = "女", Age = 25 });
List<Person> person = new List<Person>();
person.Add(new Person() { Num = 1, salary = 1000, address = "番豆花园", worktime = 1 });
person.Add(new Person() { Num = 1, salary = 2000, address = "番豆大街", worktime = 2 });
person.Add(new Person() { Num = 3, salary = 3000, address = "番豆别墅",