Тип объекта, возвращаемого по запросу, представляет собой экземпляр интерфейсаIEnumerable,гдеТ— тип получаемых элементов. Следовательно, тип переменной запроса должен быть экземпляром интерфейсаIEnumerable,а значениеТдолжно определяться типом значения, указываемым в оператореselect.В предыдущих примерах значениюТсоответствовал типint,поскольку переменнаяпимела типint.(Как пояснялось выше, переменнаяпотносится к типуint,потому что элементы именно этого типа хранятся в массивеnums.)С учетом явного указания типаIEnumerableупомянутый выше запрос можно было бы составить следующим образом.

IEnumerable posNums = from n in nums

where n > 0 select п^-

Следует иметь в виду, что тип элемента, выбираемого операторомselect,должен соответствовать типу аргумента, передаваемого форме интерфейсаIEnumerable,используемой для объявления переменной запроса. Зачастую при объявлении переменных запроса используется ключевое словоvarвместо явного указания ее типа, поскольку это дает компилятору возможность самому вывести соответствующий тип данной переменной из оператораselect.Как будет показано далее в этой главе, такой подход оказывается особенно удобным в тех случаях, когда операторselectвозвращает из источника данных нечто более существенное, чем отдельный элемент.

Когда запрос выполняется в цикле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

Перейти на страницу:

Похожие книги