Технология LINQ на примерах. Практикум с использованием электронного задачника Programming Taskbook for LINQ
Покупка
Тематика:
Программирование и алгоритмизация
Издательство:
ДМК Пресс
Автор:
Абрамян Михаил Эдуардович
Год издания: 2023
Кол-во страниц: 327
Дополнительно
Вид издания:
Практическое пособие
Уровень образования:
ВО - Бакалавриат
ISBN: 978-5-89818-529-9
Артикул: 816892.01.99
Книга является практическим введением в технологию LINQ платформы .NET. Она содержит формулировки 250 учебных заданий, связанных с интерфейсами LINQ to Objects и LINQ to XML и включенных в электронный задачник Programming Taskbook for LINQ. В книге также приводятся примеры решений большого числа типовых задач, позволяющие изучить все категории запросов LINQ to Objects и компоненты объектной модели XML DOM, входящей в LINQ to XML. Дополнительный раздел книги посвящен особенностям интерфейсов LINQ to SQL и LINQ to Entities.
Издание предназначено как для начинающих, так и для опытных программистов, желающих получить практические навыки применения технологии LINQ. Оно также может использоваться в качестве задачника-практикума для студентов вузов, посвященных программированию на платформе .NET.
Тематика:
ББК:
УДК:
ОКСО:
- ВО - Бакалавриат
- 09.03.01: Информатика и вычислительная техника
- 09.03.02: Информационные системы и технологии
- 09.03.04: Программная инженерия
ГРНТИ:
Скопировать запись
Фрагмент текстового слоя документа размещен для индексирующих роботов
Технология LINQ на примерах Практикум с использованием электронного задачника Programming Taskbook for LINQ Москва, 2023 М. Э. Абрамян 2-е издание, электронное
УДК 004.438.NET ББК 32.973 А13 А13 Абрамян, Михаил Эдуардович. Технология LINQ на примерах. Практикум с использованием электронного задачника Programming Taskbook for LINQ / М. Э. Абрамян. — 2-е изд., эл. — 1 файл pdf : 327 с. — Москва : ДМК Пресс, 2023. — Систем. требования: Adobe Reader XI либо Adobe Digital Editions 4.5 ; экран 10". — Текст : электронный. ISBN 978-5-89818-529-9 Книга является практическим введением в технологию LINQ платформы .NET. Она содержит формулировки 250 учебных заданий, связанных с интерфейсами LINQ to Objects и LINQ to XML и включенных в электронный задачник Programming Taskbook for LINQ. В книге также приводятся примеры решений большого числа типовых задач, позволяющие изучить все категории запросов LINQ to Objects и компоненты объектной модели XML DOM, входящей в LINQ to XML. Дополнительный раздел книги посвящен особенностям интерфейсов LINQ to SQL и LINQ to Entities. Издание предназначено как для начинающих, так и для опытных программистов, желающих получить практические навыки применения технологии LINQ. Оно также может использоваться в качестве задачника-практикума для студентов вузов, посвященных программированию на платформе .NET. УДК 004.438.NET ББК 32.973 Электронное издание на основе печатного издания: Технология LINQ на примерах. Практикум с использованием электронного задачника Programming Taskbook for LINQ / М. Э. Абрамян. — Москва : ДМК Пресс, 2014. — 326 с. — ISBN 978-5-94074-981-3. — Текст : непосредственный. Все права защищены. Любая часть этой книги не может быть воспроизведена в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Материал, изложенный в данной книге, многократно проверен. Но поскольку вероятность технических ошибок все равно существует, издательство не может гарантировать абсолютную точность и правильность приводимых сведений. В связи с этим издательство не несет ответственности за возможные ошибки, связанные с использованием книги. В соответствии со ст. 1299 и 1301 ГК РФ при устранении ограничений, установленных техническими средствами защиты авторских прав, правообладатель вправе требовать от нарушителя возмещения убытков или выплаты компенсации. ISBN 978-5-89818-529-9 © Абрамян М. Э., 2014 © Оформление, ДМК Пресс, 2014
Содержание Предисловие .........................................................................6 Глава 1. Технология LINQ и ее изучение с применением задачника Programming Taskbook for LINQ ...................................................................................9 1.1. Технология LINQ и связанные с ней программные интерфейсы ..............................................................................9 1.2. Общее описание групп заданий LinqBegin, LinqObj, LinqXml .................................................................................... 12 1.3. Особенности выполнения заданий с использованием задачника Programming Taskbook for LINQ ............................... 15 Глава 2. Знакомство с запросами LINQ: группа LinqBegin .............................................................................. 17 2.1. Поэлементные операции, агрегирование и генерирование последовательностей................................... 18 2.2. Фильтрация, сортировка, теоретико-множественные операции................................................................................. 20 2.3. Проецирование ................................................................ 23 2.4. Объединение и группировка ............................................. 25 Глава 3. Технология LINQ to Objects: группа LinqObj .................................................................................. 30 3.1. Обработка отдельных последовательностей ..................... 30 3.2. Обработка нескольких взаимосвязанных последовательностей .............................................................. 62
Содержание Глава 4. Технология LINQ to XML: группа LinqXml ....... 78 4.1. Создание XML-документа ................................................. 79 4.2. Анализ содержимого XML-документа ............................... 82 4.3. Преобразование XML-документа ...................................... 84 4.4. Преобразование типов при обработке XML-документа ..... 87 4.5. Работа с пространствами имен XML-документа ................ 91 4.6. Дополнительные задания на обработку XML-документов .... 92 Глава 5. Примеры решения задач из группы LinqBegin ............................................................................ 113 5.1. Поэлементные операции: LinqBegin4 .............................. 113 5.1.1. Создание проекта-заготовки и знакомство с заданием ....................................................................... 113 5.1.2. Выполнение задания ............................................... 120 5.2. Операция агрегирования и генерирование последовательностей: LinqBegin15 ....................................... 129 5.3. Фильтрация, сортировка, теоретико-множественные операции: LinqBegin31 ................ 135 5.4. Проецирование: LinqBegin43 .......................................... 146 5.5. Объединение: LinqBegin52, LinqBegin54 ......................... 153 5.5.1. Объединение последовательностей и его виды ....... 153 5.5.2. Построение перекрестного объединения: LinqBegin52 ...................................................................... 156 5.5.3. Выражения запросов ............................................... 160 5.5.4. Построение плоского левого внешнего объединения: LinqBegin54 ................................................ 165 5.6. Группировка: LinqBegin60 ............................................... 172 Глава 6. Примеры решения задач из группы LinqObj ................................................................................ 180 6.1. Простое задание на обработку отдельной последовательности: LinqObj4 .............................................. 180 6.1.1. Создание проекта-заготовки и знакомство с заданием. Дополнительные средства окна задачника, связанные с просмотром файловых данных ...................... 180 6.1.2. Выполнение задания ............................................... 186 6.2. Более сложные задания на обработку отдельных последовательностей: LinqObj41, LinqObj61 .......................... 194 6.3. Обработка взаимосвязанных последовательностей: LinqObj98 .............................................................................. 203
Содержание Глава 7. Примеры решения задач из группы LinqXml ............................................................................... 218 7.1. Создание XML-документа: LinqXml10 .............................. 218 7.2. Анализ содержимого XML-документа: LinqXml20 ............ 227 7.3. Преобразование XML-документа: LinqXml28, LinqXml32, LinqXml37 ............................................................. 236 7.4. Преобразование типов при обработке XML-документа: LinqXml50 .............................................................................. 248 7.5. Работа с пространствами имен XML-документа: LinqXml57 .............................................................................. 254 7.6. Дополнительные задания на обработку XML-документов: LinqXml61, LinqXml82.................................. 264 Глава 8. Новые средства языка C# 3.0, связанные с технологией LINQ ..................................... 278 8.1. Лямбда-выражения ........................................................ 278 8.2. Анонимные типы и описатель var .................................... 283 8.3. Методы расширения ....................................................... 285 Глава 9. Технологии LINQ для обработки удаленных источников данных ..................................... 288 9.1. Интерфейсы LINQ to SQL и LINQ to Entities ...................... 288 9.2. Интерфейс IQueryable<T> и интерпретируемые запросы ................................................................................ 289 9.3. Основные ограничения на запросы LINQ для удаленных источников данных ........................................ 293 9.4. Пример применения интерфейса LINQ to SQL: LinqObj71 .............................................................................. 294 9.4.1. Создание и настройка локальной базы данных ........ 294 9.4.2. Создание и использование простейшей объектной модели базы данных ........................................ 299 9.4.3. Создание и настройка базы данных, основанной на службах ........................................................................ 305 9.4.4. Автоматическая генерация объектной модели базы данных и особенности ее использования ................. 311 Литература ........................................................................ 317 Указатель ........................................................................... 318
Предисловие Книга, предлагаемая вашему вниманию, представляет собой практическое введение в технологию LINQ платформы .NET. Эта технология входит в состав платформы .NET Framework, начиная с версии 3.5; она предоставляет программисту, использующему языки C# или Visual Basic .NET, средства высокого уровня для обработки различных наборов данных. С каждой категорией данных связываются особые интерфейсы (LINQ API), в частности интерфейс LINQ to Objects предназначен для работы с локальными коллекциями, LINQ to XML – для обработки данных в формате XML, интерфейсы LINQ to SQL и LINQ to Entities (Entity Framework) – для работы с удаленными хранилищами данных. При этом базовый набор средств обработки (запросов LINQ) остается неизменным для любого интерфейса, обеспечивая универсальный характер технологии LINQ. К преимуществам технологии LINQ, помимо ее универсального характера, можно отнести краткость и наглядность программ, полученных с ее применением, а также простоту реализации достаточно сложных алгоритмов обработки данных. В то же время, для того чтобы получить эффективные реализации алгоритмов, основанных на применении технологии LINQ, необходимо владеть всем арсеналом доступных запросов и других компонентов LINQ API, выбирая и комбинируя их способом, наиболее подходящим для каждого конкретного случая. Один из подходов к практическому освоению технологии LINQ (как и любой технологии программирования) состоит в решении набора учебных задач, связанных с различными возможностями этой технологии. Между тем среди книг, посвященных технологии LINQ и включающих фундаментальные руководства [4–5] и справочники [3] (следует также отметить подробные разделы о технологии LINQ в книгах [1–2]), подобные задачники отсутствуют. Предлагаемая книга призвана восполнить этот пробел.
Предисловие 7 В книге содержатся 250 учебных задач, посвященных интерфейсам LINQ to Object и LINQ to XML. Выбор указанных интерфейсов обосновывается в гл. 1 и обусловлен тем, что первый из них позволяет изучить базовый набор запросов LINQ, а второй дает возможность закрепить навыки в использовании технологии LINQ, применяя ее к задачам обработки данных в формате XML – одном из наиболее распространенных в настоящее время универсальных форматов хранения информации. Задачи разбиты на три группы: LinqBegin (60 задач, посвященных конкретным запросам LINQ, – см. гл. 2); LinqObj (100 задач на обработку локальных коллекций – см. гл. 3); LinqXml (90 задач, связанных с обработкой документов XML, – см. гл. 4). Поскольку при выполнении заданий важно ориентироваться на эффективные приемы применения технологии LINQ, в книге приводится большое число примеров решения типовых задач из указанных групп (см. гл. 5–7). Формулировки решенных задач, приведенные в гл. 2–4, снабжаются примечанием, в котором указывается номер пункта с решением данной задачи. Книга также включает описание новых возможностей языка C# версии 3.0, непосредственно связанных с технологией LINQ (гл. 8), и краткий обзор особенностей интерфейсов LINQ to SQL и LINQ to Entities (гл. 9). Все задачи, приведенные в книге, входят в состав электронного задачника Programming Taskbook for LINQ, являющегося одним из дополнений универсального задачника по программированию Programming Taskbook. Электронный задачник предоставляет программам наборы исходных данных, проверяет правильность полученных результатов, диагностирует различные виды ошибок в программах и отображает на экране все данные, связанные с заданием. Автоматическая генерация вариантов исходных данных, предоставляемых задачником программе, обеспечивает ее надежное тестирование. Эта возможность оказывается особенно полезной в ситуациях, когда исходные данные являются достаточно сложными и действия по их подготовке и вводу в программу требуют больших усилий. В качестве примеров можно привести задания на обработку массивов, файлов, линейных динамических структур и деревьев. К заданиям со сложными исходными данными можно отнести и за
Предисловие дания, связанные с применением технологии LINQ, поскольку все они посвящены обработке последовательностей (в заданиях группы Linq Begin это числовые или строковые последовательности, в заданиях LinqObj это последовательности записей, хранящиеся в текстовых файлах, в заданиях LinqXml – XML-документы). Задачник включает средства ввода-вывода, позволяющие легко организовать чтение исходных данных и запись результатов. Кроме того, в нем предусмотрены средства отладки, упрощающие поиск и исправление ошибок, и средства визуализации всех данных, связанных с выполняемым заданием. Все эти средства подробно описываются в гл. 5–7, содержащих описания решений типовых задач. Задания могут выполняться как на языке C#, так и на Visual Basic .NET в любой из версий среды программирования Microsoft Visual Studio, поддерживающих технологию LINQ (версии 2008, 2010, 2012). Электронный задачник Programming Taskbook и его дополнение Programming Taskbook for LINQ доступны на сайте http://ptaskbook. com/. Приведенные к книге примеры кода доступны на сайте издательства «ДМК Пресс» www.дмк.рф.
Глава 1. Технология LINQ и ее изучение с применением задачника Programming Taskbook for LINQ 1.1. Технология LINQ и связанные с ней программные интерфейсы Технология LINQ (Language Integrated Query – «запрос, интегрированный в язык»; произносится «линк») расширяет возможности языка программирования путем включения в него дополнительных средств высокого уровня (запросов LINQ), предназначенных для преобразования различных наборов данных. «LINQ – это технология Microsoft, предназначенная для обеспечения механизма поддержки уровня языка для опроса данных всех типов» ([4], с. 21). «LINQ – это набор функциональных возможностей языка C# 3.0 и платформы .NET Framework 3.5, обеспечивающих написание безопас ных в смысле типизации структурированных запросов к локальным коллекциям объектов и удаленным источникам данных» ([1], с. 315). В каждом из приведенных определений подчеркивается универсальность технологии LINQ. Входящие в нее средства можно применять для обработки наборов данных самых разных видов: массивов и других локальных коллекций данных, удаленных баз данных, XML-документов, а также любых других источников данных, для которых реализован программный интерфейс LINQ (LINQ API). В версии .NET Framework 3.5 – первой из версий .NET, поддерживающих технологию LINQ, – были представлены следующие компоненты LINQ API: LINQ to Objects – базовый интерфейс для стандартных запросов к локальным коллекциям; данный интерфейс основан на
Технология LINQ и ее изучение с применением задачника методах класса System.Linq.Enumerable (включает около 40 видов запросов) и позволяет обрабатывать любые объекты, реализующие интерфейс IEnumerable<T> ; LINQ to XML – интерфейс, предназначенный для обработки XML-документов; он включает не только набор запросов, дополняющих стандартные запросы LINQ to Objects и реализованных в методах класса System.Xml.Linq.Extensions (около 10 видов запросов), но и новую объектную модель XMLдокументов (XML DOM), реализованную в виде иерархии классов из пространства имен System.Xml.Linq; LINQ to SQL и LINQ to Entities (Entity Framework) – интерфейсы, предназначенные для взаимодействия с удаленными базами данных в качестве источников наборов данных; эти интерфейсы основаны на методах класса System.Linq.Queryable и предназначены для обработки объектов, реализующих интерфейс IQueryable<T> . Одновременно с включением в .NET интерфейсов LINQ API в языки C# и Visual Basic .NET были добавлены новые возможности, позволяющие максимально упростить программный код, связанный с запросами LINQ. Основными из этих возможностей являются лямбда-выражения, методы расширения и анонимные типы (а также деревья выражений, используемые в интерфейсах LINQ to SQL и LINQ to Entities). Кроме того, в языки были включены новые конструкции (так называемые выражения запросов), позволяющие представить наиболее сложные запросы LINQ не только в виде цепочек методов расширения, содержащих лямбда-выражения, но и в более наглядном виде, подобном выражениям языка структурированных запросов SQL (такой вариант синтаксиса запросов LINQ получил в русскоязычной литературе название синтаксиса, облегчающего восприятие). Технология LINQ обладает расширяемой архитектурой, которая позволяет разрабатывать дополнительные интерфейсы LINQ API, обеспечивающие обработку специализированных наборов данных. Подобные интерфейсы могут быть реализованы сторонними разработчиками для обеспечения доступа к их хранилищам данных, представленным в специальном формате. В Интернете можно найти ряд дополнительных интерфейсов LINQ, реализованных с той или иной степенью полноты (в качестве примера можно указать LINQ to Google и LINQ to Wiki), хотя в настоящее время широкое