Следует иметь в виду, что тип элемента, выбираемого операторомselect,должен соответствовать типу аргумента, передаваемого форме интерфейсаIEnumerable
Когда запрос выполняется в циклеforeach,тип переменной шага цикла должен быть таким же, как и тип переменной диапазона. В предыдущих примерах тип этой переменной указывался явно какint.Но имеется и другая возможность: предоставить компилятору самому вывести тип данной переменной, и для этого достаточно указать ее тип какvar.Как будет показано далее в этой главе, ключевое словоvarприходится использовать и в тех случаях, когда тип данных просто неизвестен.
Общая форма запроса
У всех запросов имеется общая форма, основывающаяся на ряде приведенных ниже контекстно-зависимых ключевых слов.
Ascending
by
descending equals
from
group
in into
join
let
on orderby
select
where
Среди них лишь торов запроса.
приведенные ниже ключевые слова используются в начале опера-
from
group
join let
orderby
select
where
Запрос должен начинаться с ключевого слова from и оканчиваться ключевым словом select или group. Оператор select определяет тип значения, перечисляемого по запросу, а оператор group возвращает данные группами, причем каждая группа может перечисляться по отдельности. Как следует из приведенных выше примеров, в операторе where указываются критерии, которым должен удовлетворять искомый элемент, чтобы быть полученным по запросу. А остальные операторы позволяют уточнить запрос. Все они рассматриваются далее по порядку.
Отбор запрашиваемых значений с помощью оператора where
Как пояснялось выше, оператор where служит для отбора данных, возвращаемых по запросу. В предыдущих примерах этот оператор был продемонстрирован в своей простейшей форме, в которой для отбора данных используется единственное условие. Однако для более тщательного отбора данных можно задать несколько условий и, в частности, в нескольких операторах where. В качестве примера рассмотрим следующую программу, в которой из массива выводятся только те значения, которые положительны и меньше 10.
// Использовать несколько операторов where.
using System; using System.Linq;