English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Язык запросов LINQ

有两种将LINQ查询写入 IEnumerable 集合 或 IQueryable数据源的基本方法。

  1. 查询语法或查询表达式语法

  2. 方法语法或方法扩展语法或连贯语法

Как следует из названия

查询语法类似于数据库的SQL(结构化查询语言)。它在C#或VB代码中定义。

LINQ查询语法:

from <range variable> in <IEnumerable<T> or IQueryable<T> Collection>
<Standard Query Operators> <lambda expression>
<select or groupBy operator> <result formation>

LINQ查询语法以from关键字开头,以select关键字结尾。下面是一个示例LINQ查询,该查询返回一个字符串集合,其中包含一个单词“ Tutorials”。

// 字符串集合
IList<string> stringList = new List<string>() { 
    "C# Tutorials",
    "VB.NET Tutorials",
    "Learn C++",
    "MVC Tutorials" ,
    "Java" 
};
// LINQ查询语法
var result = from s in stringList
            where s.Contains("Tutorials") 
            select s;

На рисунке ниже показана структура синтаксиса запросов LINQ.

Синтаксис запросов LINQ

Синтаксис запросов LINQ начинается с подзапроса FROM, за которым следует переменная диапазона. From enumerablecollection

После подзапроса FROM можно использовать различные стандартные операторы запросов для фильтрации, группировки и объединения элементов в集合е. В LINQ около 50 стандартных операторов запросов. На рисунке выше мы используем оператор WHERE (или подзапрос), за которым следует условие. Обычно это условие выражается с помощью lambda-выражения.

Синтаксис запросов LINQ всегда заканчивается Select или Group подзапросами. Подзапрос Select используется для преобразования данных. Вы можете выбрать целое objeto целиком, а также только некоторые из его свойств. В примере выше мы выбрали каждый элемент строки результата.

В следующем примере мы используем синтаксис запросов LINQ для поиска подростков в集合е Student (серии).

Example: Синтаксис запроса LINQ в VB.Net
IList<Student> studentList = new List<Student>() { 
        new Student() { StudentID = 1, StudentName = "John", Age = 13} ,
        new Student() { StudentID = 2, StudentName = "Moin", Age = 21 } ,
        new Student() { StudentID = 3, StudentName = "Bill", Age = 18 } ,
        new Student() { StudentID = 4, StudentName = "Ram", Age = 20 } ,
        new Student() { StudentID = 5, StudentName = "Ron", Age = 15 } 
    };
}
var teenAgerStudent = from s in studentList
                      where s.Age > 12 && s.Age < 20
                      select s;
Example: Синтаксис запроса LINQ в VB.Net
// Сборник студентов
        Dim studentList = New List(Of Student) From {
        New Student() With { .StudentID = 1, .StudentName = "John", .Age = 13},
        New Student() With { .StudentID = 2, .StudentName = "Moin", .Age = 21},
        New Student() With { .StudentID = 3, .StudentName = "Bill", .Age = 18},
        New Student() With { .StudentID = 4, .StudentName = "Ram", .Age = 20},
    New Student() With { .StudentID = 5, .StudentName = "Ron", .Age = 15}
}
// Найти подростков в LINQ
                                            Dim teenAgerStudents As IList(Of Student) = (From s In studentList _
                                            Where s.Age > 12 And s.Age < 20 _

Select s).ToList()

  1. Темы, которые нужно запомнитьКак следует из названияСинтаксис запроса

  2. Синтаксис запроса аналогичен синтаксису SQL (язык структурированных запросов).fromНачало предложения, можно начать сSelectилиGroupByКонец предложения.

  3. Используйте различные другие операторы, такие как фильтрация, своп,分组, сортировка, чтобы построить необходимые результаты.

  4. Неявные переменные типа var можно использовать для сохранения результатов запроса LINQ.