Главная » Просмотр файлов » Г. Шилдт - С# 3.0 Полное руководство. 2010

Г. Шилдт - С# 3.0 Полное руководство. 2010 (1160798), страница 124

Файл №1160798 Г. Шилдт - С# 3.0 Полное руководство. 2010 (Г. Шилдт - С# 3.0 Полное руководство. 2010) 124 страницаГ. Шилдт - С# 3.0 Полное руководство. 2010 (1160798) страница 1242019-09-19СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 124)

0)(а 643 Этот запрос формируется следующим образом. В операторе ггои используется переменная диапазона ))ои для охвата всего массива ггаче1Турев. Напомним, что массив ггане1Турев спдержит названия общих категорий транспорта; воздушного, наземного, морского и речного. Каждый вид транспорта объединяется в операторе 9 огп со своей категорией. Например, велосипед, автомашина и поезд объединяются с наземным транспортом. Но благодаря оператору Тпго для кюкдой категории транспорта в операторе ) огп составляется список видов транспорта, относящихся к этой категории.

Этот список сохраняется в переменной 1вг. И наконец, оператор ве1есг возвращает объект анонимного типа, инкапсулирующий каждое значение переменной ))ои (категории транспорта) вместе со списком видов транспорта. Именно поэтому для вывода результатов запроса требуются два цикла гогеас)). Гогеасъ(маг Г гп сгнои) ( Сопво1е.нг1геьгпе("К категории <(0) транспорт> относится:", Г.иои) Еогеасп(таг и 1п Г.Т1гвс) Сопво1е.нггсеъгпе(" " т и.Нане) Сопво1е.иг1сеъ1пе() Во внешнем цикле получается объект, содержащий наименование общей категории транспорта, и список видов транспорта, относящихся к этой категории.

А во внутреннем цикле выводятся отдельные виды транспорта. Методы запроса Синтаксис запроса, описанный в предыдущих разделах, применяется при формировании большинства запросов в С№. Он удобен, эффективен и компактен, хотя и не является единственным способом формирования запросов. Другой способ состоит в использовании методов запроса, которые могут вызываться для любого перечислимого объекта, например массива. Основные методы запроса Методы запроса определяются в классе зувге)а.

Е1пс(. Еппл)егаЫе и реализуются в виде методов рааииреиия функций обобщенной формы интерфейса ТЕпшпегаЫе<т>. (Методы запроса определяются также в классе Бувсет. Е1пц. ()пегуаЫе, расширяющем функции обобщенной формы интерфейса 10оегуаЫе<Т>, но этот интерфейс в настоящей главе не рассматривается.) Метод расширения дополняет функции другого класса, но без наследования. Поддержка методов расширения была внедрена в версию С№ 3.0 и более подробно рассматривается далее в этой глане.

А до тех пор достаточно сказать, что методы запроса могут вызываться только для тех объектов, которые реализуют интерфейс 1ЕпшпегаЫе<Т>. В классе ЕпшвегаЫе предоставляется немало методов запроса, но основными считаются те методы, которые соответствуют описанным ранее операторам запроса. Эти методы перечислены ниже вместе с соответствующими операторами запроса. Следует, однако, иметь в виду, что эти методы имеют также перегружаемые формы, а здесь они представлены лишь в самой простой своей форме. Но именно эта их форма используется чаще всего. 644 Часть (. Язык С» Зкеиеалентныйметодзапроса Оператор запроса яе1есс ыпеге огиегпу »оап дгоир яе1есС(агд) Нпеге (агд) Огк(егву(агд) или Огиегвупеясеповпд(агд) Зо1п(яед2, )кеу1, )кеу2, результат) Огоирну(агд) За исключением метода до1п (), остальные методы запроса принимают единственный аргумент (агд), который представляет собой объект типа рипс<Т, Тпеяи1С>, указываемый в качестве параметра. Это тип делегата, определяемый средствами ).(ХО.

Он объявляется следующим образом: ое1едасе таеяи1с гипс<т, тнеяи1Ь>(т агд) Формирование запросов с помощью методов запроса Используя методы запроса в сочетании с лямбда-выражениями, можно формировать запросы, вообще не пользуясь синтаксисом, предусмотренным в С№ для запросов. Вместо этого достаточно вызвать соответствующие методы запроса.

Обратимся сначала к про- где Тпеяи1Г обозначает результат делегата, а Т вЂ” тип параметра. В методах запроса аргумент агд определяет действие, которое предпринимает метод запроса. Например, в методе Ипеге ( ) аргумент агд определяет порядок отбора данных в запросе. Каждый метод запроса возвращает перечислимый объект.

Поэтому результат выполнения одного метода запроса можно использовать для вызова другого, соединяя эти методы в цепочку. Метод до1п () принимает четыре аргумента. Первый аргумент (яед2) представляет собой ссылку на вторую объединяемую последовательность, а первой является последовательность, для которой вызывается метод до1п () . Селектор ключа для первой последовательности передается в качестве аргумента )(еу1, а селектор ключа для второй последовательности — в качестве аргумента )геу2. Результат объединения обозначается как аргумент результат.

Аргумент )геу1 имеет тип рипс<ТОисег, ТКеу>, аргумент )кеу2 — тип Гипс<11ппег, ТКеу>,тогда как аргументреяультат — тип рипс<ТОисег, т1ппег, тнеяи1ь>, где тОиьег — тип элемента из вызывающей последовательности; Т1ппег — тип элемента из передаваемой последовательности; Тпеяи1à — тип элемента из объединяемой в итоге последовательности, возвращаемой в виде перечислимого объекта. Аргумент метода запроса представляет собой метод, совместимый с указываемой формой делегата гипс, но он не обязательно должен быть явно объявляемым методом.

На самом деле вместо него чаще всего используется лямбда-выражение. Как пояснялось в главе 15, лямбда-выражение является новым синтаксическим средством, предоставляемым, начиная с версии С№ 3.0. Оно обеспечивает более простой, но эффективный способ определения того, что, по существу, является анонимным методом, а компилятор С№ автоматически преобразует лямбда-выражение в форму, которая может быть передана в качестве параметра гипс. Благодаря тому что лямбда-выражения обеспечивают более простой и рациональный способ программирования, они используются во всех примерах, представленных в этом разделе. Глава!9. Вмй 645 етому примеру.

Он представляет собой вариант первого примера программы из этой главы, переделанный с целью продемонстрировать применение методов запроса Инесе () и Яе1есг () вместо соответствующих операторов. // Испольэовать методы запроса для формирования простого // запроса.

Это переделанный вариант первого примера // программы иэ настоящей глазы. пагод Яуяселп пагод Яуягещ.ьгиял с1азя 51щрфпегу ( ясасус чо10 Маги() ( ьпс() пища = ( 1, -2, 3, О, -4, 5 ); // Использовать методы Иьеге() и Яе1есс() для // формирования простого запроса. чаг роямпщя = ипщя .ипеге (и => п > 0) . яе1есг (г => г) Соияо1е.нггсе("Положительные значения иэ массива ппщя: ") О Выполнить запрос и вывести его результаты. Гогеасн(1ис г ьи роямпщя) Соияо1е.Иггсе(1 + " ") Соияо1е.нг1се11ие () л ) ) Эта версия программы дает такой же результат, как и исходная: Положительные значения иэ массива ипщя: 1 3 5 В этой программе особое внимание обратите на следующую строку кода; чаг роямпщя = ипщя.вьете(и => и > 0) .Яе1есс (г => г); В этой строке кода формируется запрос, сохраняемый в переменной ро ямпщя.

По этому запросу, в свою очередь, формируется последовательность положительных значений, извлекаемых из массива ипщз. Для этой цели служит метод И)>еге О, отбирающий запрашиваемые значения, а также метод Яе1есс (), избирательно формирующий из этих значений окончательный результат. Метод ипеге () может быть вызван для массива ппщя, поскольку во всех массивах реализуется интерфейс 1нппщега)>1е<Т>, поддерживающий методы расширения запроса.

Формально метод Яе1есг () в рассматриваемом здесь примере не нужен, поскольку это простой запрос. Ведь последовательность, возвращаемая методом Ипате (), уже содержит конечный результат. Но окончательный выбор можно сделать и по более сложному критерию, как это было показано ранее на примерах применения синтаксиса запросов. Так, по приведенному ниже запросу из массива ппщя возвращаются положительные значения, увеличенные на порядок величины. чаг роянпщя = иищя.нвеге(п => п > 0).Яе1есс(г => г * 10) Как и следовало ожидать, в цепочку можно объединять и другие операции над данными, получаемыми по запросу.

Например, по следующему запросу выбираются поло- 646 Часть(, язык Сз жительиые значения, которые затем сортируются по убывающей и возвращаются в виде результирующей последовательности: чаг розицвя = пцвз.иьеге(п => и > О) .ОгбегВуоеясепбгпд(« => «) где выражение « => «обозначает, что упорядочение зависит от входного параметра, который является элементом данных из последовательности, получаемой из метода Ийете () . В приведенном ниже примере демонстрируется применение метода запроса ОгоцрВу ( ) . Это переработанный вариант представленного ранее примера.

// Продемонстрировать применение метода // запроса Огоцрву(). Это переработанный вариант // примера, представленного ранее для демонстрации // синтаксиса запросов. ця1пч Буяпев; цз1пч Буяяев.11пЧ1 с1аяя Огоцрвупево зсасас човб Маги() ( япггпп() неЬягпез = ("ЬяиавеА.сов", яйзиавеВ.пег", "Ьяиавес.пеп", Япяиавеп.сов", "ЬяиавеЕ.ого", "Ьяиавег.огп", "Ьзиавеп.пч", "Пяиавеи.пеп", "Ьяиавег.пч")1 // использовать методы запроса для группирования // веб-сайтов по имени домена самого верхнего уровня. чаг неЬАббгя =неЬягпез.ИЬеге(н => н.ьазп1пбехОГ(я.ч) != 1). ОгоцрВу(х => х.зцвззг1по(х.Ьазп1пбехбг(".", х.ьепппа))); // Выполнить запрос и вынес~и его результаты.

Гогеасп(чаг заявя 1п неЬАббгя) ( Сопяо1е.иг1пе11пе("Веб-сайты, сгруппированные " т "по имени домена " + запев.кеу)1 Гогеасп(чаг я1пе 1п я1пез) Сопяо1е.иг11еь1пе(" " + я1пе)/ Сопзо1е.иггпеьгпе(); ) Эта версия программы дает такой же результат, как предыдущая. Единственное отличие между ними заключается в том, как формируется запрос. В данной версии для этой цели используются методы запроса. Рассмотрим другой пример. Но сначала приведем еще раз запрос из представленного ранее примера применения оператора «о1п: чаг 1пзгосхьгзп = ггов геев гп ггевз «оьп епегу 1п япаецявазп оп апев.1певишпЬег епца1з еппгу.1певицвЬег яе1есп пен тевр(геев.паве, еппгу.1пБСосх) Глава (9. Впй 647 По этому запросу формируется последовательность, состоящая из объектов, инкапсулирующих наименование товара и состояние его запасов на складе. Вся эта информация получается путем объединения двух источников данных: 1гевз и эьагпзъ1эг.

Характеристики

Тип файла
DJVU-файл
Размер
6,78 Mb
Тип материала
Высшее учебное заведение

Список файлов книги

Г. Шилдт - С# 3.0 Полное руководство
C_sharp_3TCR_code
Apndx.lst
Chap2.lst
Chap3.lst
Chap4.lst
Chap5.lst
Chap6.lst
Chap7.lst
Chap8.lst
Chap9.lst
Chap10.lst
Chap11.lst
Chap12.lst
Chap13.lst
Chap14.lst
Chap15.lst
Chap16.lst
Chap17.lst
Chap18.lst
Chap19.lst
Chap20.lst
Chap21.lst
Chap22.lst
Chap23.lst
Chap24.lst
Chap25.lst
Chap26.lst
Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6458
Авторов
на СтудИзбе
304
Средний доход
с одного платного файла
Обучение Подробнее