基本

LINQ 在查询集合(或数组)方面非常有用。

例如,给出以下示例数据:

var classroom = new Classroom
{
    new Student { Name = "Alice", Grade = 97, HasSnack = true  },
    new Student { Name = "Bob",   Grade = 82, HasSnack = false },
    new Student { Name = "Jimmy", Grade = 71, HasSnack = true  },
    new Student { Name = "Greg",  Grade = 90, HasSnack = false },
    new Student { Name = "Joe",   Grade = 59, HasSnack = false }
}

我们可以使用 LINQ 语法查询此数据。例如,要检索今天吃零食的所有学生:

var studentsWithSnacks = from s in classroom.Students
                         where s.HasSnack
                         select s;

或者,要检索成绩为 90 或以上的学生,只返回他们的名字,而不是完整的 Student 对象:

var topStudentNames = from s in classroom.Students
                      where s.Grade >= 90
                      select s.Name;

LINQ 功能由两个执行相同功能的语法组成,具有几乎相同的性能,但写法却截然不同。上例中的语法称为查询语法。但是,以下示例说明了方法语法。将返回相同的数据,如上例所示,但查询的编写方式不同。

var topStudentNames = classroom.Students
                               .Where(s => s.Grade >= 90)
                               .Select(s => s.Name);