В классеEnumerableпредоставляется немало методов запроса, но основными считаются те методы, которые соответствуют описанным ранее операторам запроса. Эти методы перечислены ниже вместе с соответствующими операторами запроса. Следует, однако, иметь в виду, что эти методы имеют также перегружаемые формы, а здесь они представлены лишь в самой простой своей форме. Но именно эта их форма используется чаще всего. v
Оператор запроса
Эквивалентный метод запроса
select
Select(selector)
where
Where(predicate)
orderby
OrderBy(keySelector)или OrderByDescending(keySelector)
join
Join(inner, outerKeySelector, innerKeySelector, resultSelector)
group
GroupBy(keySelector)
За исключением методаJoin, остальные методы запроса принимают единственный аргумент, который представляет собой объект некоторой разновидности обобщенного типаFuncЭто тип встроенного делегата, объявляемый следующим образом:
delegate TResult Funccin Т, out TResult>(Т arg)
гдеTResultобозначает тип результата, который дает делегат, аТ— тип элемента. В методах запроса аргументыselector,predicateилиkeySelectorопределяют действие, которое предпринимает метод запроса. Например, в методеWhere аргументpredicateопределяет порядок отбора данных в запросе. Каждый метод запроса возвращает перечислимый объект. Поэтому результат выполнения одного метода запроса можно использовать для вызова другого, соединяя эти методы в цепочку.
МетодJoin принимает четыре аргумента. Первый аргумент(inner)представляет собой ссылку на вторую объединяемую последовательность, а первой является последовательность, для которой вызывается методJoin . Селектор ключа для первой последовательности передается в качестве аргументаouterKeySelector,аселектор ключа для второй последовательности — в качестве аргументаinnerKeySelector.Результат объединения обозначается как аргументresultSelector.АргументouterKeySelectorимеет типFunc,ТКеу>,аргументinnerKeySelector— типFunc,ТКеу>,тог^а как аргументresultSelector— типFunc,гдеTOuter— тип элемента из вызывающей последовательности;Tinner— тип элемента из передаваемой последовательности;TResult— тип элемента из объединяемой в итоге последовательности, возвращаемой в виде перечислимого объекта.