Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
CSharp Language Specification.doc
Скачиваний:
13
Добавлен:
26.09.2019
Размер:
4.75 Mб
Скачать

7.16Выражения запросов

Выражения запросов представляют собой подмножество синтаксических конструкций языка для запросов, похожих запросы иерархических или реляционных языков запросов, таких как SQL и XQuery.

выражение_запроса: предложение_from тело_запроса

предложение_from: from типнеобязательно идентификатор in выражение

тело_запроса: предложения_тела_запросанеобязательно предложение_select_или_group дополнительный_запроснеобязательно

предложения_тела_запроса: предложение_тела_запроса предложения_тела_запроса предложение_тела_запроса

предложение_тела_запроса: предложение_from предложение_let предложение_where предложение_join предложение_join-into предложение_orderby

предложение_let: let идентификатор = выражение

предложение_where: where логическое_выражение

предложение_join: join типнеобязательно идентификатор in выражение on выражение equals выражение

предложение_join-into: join типнеобязательно идентификатор in выражение on выражение equals выражение into идентификатор

предложение_orderby: orderby упорядочения

упорядочения: упорядочение упорядочения , упорядочение

упорядочение: выражение направление_упорядочениянеобязательно

направление_упорядочения: ascending descending

предложение_select_или_group: предложение_select предложение_group

предложение_select: select выражение

предложение_group: group выражение by выражение

объединение_запросов: into идентификатор тело_запроса

Выражение запроса начинается с предложения from и заканчивается предложением select или group. После исходного предложения from могут идти предложения from, let, where, join или orderby. Каждое предложение from является генератором, предлагающим переменную диапазона, которая включает элементы последовательности. Каждое предложение let вводит переменную диапазона, которая представляет значение, вычисляемое с помощью предыдущих переменных диапазона. Каждое предложение where является фильтром для исключения элементов из результата. Каждое предложение join сравнивает указанные ключи исходной последовательности с ключами другой последовательности, выдавая совпадающие пары. Каждое предложение orderby изменят порядок элементов в соответствии с указанными критериями. Конечное предложение select или group задает формат результата в виде переменных диапазона. И наконец, предложение into можно использовать для «склеивания» запросов, рассматривая результаты одного запроса в качестве генератора для последующего запроса.

7.16.1Неоднозначность в выражениях запросов

Выражения запросов содержат определенное число «контекстных ключевых слов», то есть идентификаторов, у которых есть особое значение в конкретном контексте. В частности, это from, where, join, on, equals, into, let, orderby, ascending, descending, select, group и by. Чтобы не допустить появления неоднозначности в выражениях запросов, вызванной смешанным использованием этих идентификаторов в виде ключевых слов и простых имен, при появлении в любом месте выражения запроса такие идентификаторы считаются ключевыми словами.

В этом смысле выражением запроса является любое выражение, которое начинается со строки «from идентификатор», за которым следует любая лексема кроме «;», «=» или «,».

Чтобы использовать эти слова в качестве идентификаторов в выражении запроса, перед ними можно указать «@» (§2.4.2).

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]