LINQ. Язык интегрированных запросов в C# 2010 для профессионалов
Адам Фримен, Джозеф Раттц-мл.
Благодаря этой книге, вы изучите следующие вопросы:
- Как эффективно задействовать все новые возможности языка C# 2010, связанные с LINQ, включая методы расширений, лямбда-выражения, анонимные типы данных и частичные методы.
- Как использовать LINQ to Objects для запроса информации из коллекций данных, расположенных в памяти, таких как массивы, ArrayList и списки.
- Почему некоторые запросы являются отложенными, как они влияют на код, и каким образом заставить их работать максимально эффективно.
- Как использовать LINQ to XML для создания, манипулирования и поиска в XML-данных.
- Как осуществлять запросы в наборы данных с помощью LINQ to DataSet, сосуществуя с унаследованным кодом, и как использовать LINQ для работы с базами данных, отличными от SQL Server.
- Как запрашивать базы данных посредством LINQ to SQL, создавать собственные сущностные классы и обрабатывать конфликты параллельного доступа.
Книга рассчитана на программистов разной квалификации, а также будет полезна для студентов и преподавателей дисциплин, связанных с программированием и разработкой для .NET.
«Эта книга целиком и полностью посвящена написанию кода. Она начинается с кода и кодом же завершается. При написании книги мы преследовали цель предложить вам цельный набор полезных примеров применения LINQ. Вместо того чтобы показывать одиночные и простые примеры, мы попытались представить полную картину и продемонстрировать всю мощь доступных операций и прототипов LINQ. Благодаря этой информации, вы сможете сразу же приступить к эффективному использованию LINQ и извлечь максимум из этого мощного и гибкого инструмента.
В книге мы стремились давать информацию в такой форме, которая бы позволила использовать ее непосредственно в разрабатываемых проектах. Вместо того чтобы уводить в сторону от базовых принципов, рассматривая мало пригодные для применения крупные демонстрационные приложения, в этой книге внимание фокусируется на каждой операции, методе и классе LINQ, предоставляя сведения, которые нужны - кратко и полно. Например, код, иллюстрирующий конфликты параллельного доступа, в действительности их и создает, так что можно пошагово пройти код, уловить суть проблемы и разобраться в способе ее разрешения.
Книга предназначена для тех, кто знаком с языком C# и желает изучить технологию LINQ и языковые средства C# 4.0, связанные с LINQ. При этом знание всех особенностей версии .NET 4.0 не требуется. Там где нужны более глубокие знания, объяснения начинаются с нуля, потому разобраться сможет даже новичок в C#». Адам Фримен и Джозеф Раттц-мл.
Издательство: Вильямс, 2011 г.
ISBN 978-5-8459-1701-0, 978-1430-22653-6
Количество страниц: 656.
Содержание книги «LINQ. Язык интегрированных запросов в C# 2010 для профессионалов»:
- 15 Об авторах
- 15 О техническом рецензенте
- 16 Благодарности
- 16 От издательства
- 16 Исходный код примеров
- 17 Часть I. LINQ: язык интегрированных запросов в C# 2010
- 18 Глава 1. Знакомство с LINQ
- 18 Сдвиг парадигмы
- 19 Запрос к XML
- 20 Запрос к базе данных SQL Server
- 21 Появление LINQ
- 21 LINQ поддерживает запросы данных
- 22 Как получить LINQ
- 23 LINQ предназначен не только для запросов
- 25 Советы начинающим
- 26 Используйте ключевое слово var, когда запутались
- 27 Используйте операции Cast или OfType для унаследованных коллекций
- 28 Отдавайте предпочтение операции OfType перед Cast
- 28 Не рассчитывайте на безошибочность запросов
- 29 Используйте преимущество отложенных запросов
- 30 Используйте свойство Log из DataContext
- 31 Используйте форум LINQ
- 31 Резюме
- 18 Сдвиг парадигмы
- 32 Глава 2. Расширения языка C# для LINQ
- 32 Дополнения языка C#
- 32 Лямбда-выражения
- 37 Деревья выражений
- 38 Ключевое слово var, инициализация объектов и анонимные типы
- 43 Расширяющие методы
- 47 Частичные методы
- 49 Выражения запросов
- 58 Резюме
- 32 Дополнения языка C#
- 61 Часть II. LINQ to Objects
- 62 Глава 3. Введение в LINQ to Objects
- 62 Обзор LINQ to Objects
- 63 Интерфейс IEnumerable<T>, последовательности и стандартные операции запросов
- 64 Возврат IEnumerable<T>, выдача и отложенные запросы
- 67 Делегаты Func
- 68 Алфавитный указатель стандартных операций запросов
- 69 История о двух синтаксисах
- 70 Резюме
- 71 Глава 4. Отложенные операции
- 71 Необходимые пространства имен
- 71 Необходимые сборки
- 71 Общие классы
- 73 Организация отложенных операций по назначению
- 73 Ограничение
- 75 Проекция
- 83 Разбиение
- 90 Конкатенация
- 92 Упорядочивание
- 107 Соединение
- 111 Группирование
- 116 Множества
- 121 Преобразование
- 127 Элемент
- 131 Генерация
- 134 Резюме
- 135 Глава 5. Не отложенные операции
- 135 Необходимые пространства имен
- 135 Общие классы
- 138 Организация не отложенных операций по назначению
- 138 Преобразование
- 149 Эквивалентность
- 151 Элемент
- 163 Квантификаторы
- 168 Агрегация
- 180 Резюме
- 181 Часть III. LINQ to XML
- 182 Глава 6. Введение в LINQ to XML
- 184 Введение
- 184 Обман W3C DOM XML API
- 186 Резюме
- 187 Глава 7. Интерфейс LINQ to XML API
- 187 Необходимые пространства имен
- 187 Значимые проектные усовершенствования API-интерфейса
- 188 Конструирование деревьев XML было упрощено с помощью функционального конструирования
- 190 Центральная роль элемента вместо документа
- 191 Имена, пространства имен и префиксы
- 194 Извлечение значения узла
- 196 Объектная модель LINQ to XML
- 197 Отложенное выполнение запросов, удаление узлов и «проблема Хэллоуина»
- 199 Создание XML
- 200 Создание элементов с помощью XElement
- 202 Создание атрибутов с помощью XAttribute
- 203 Создание комментариев с помощью XComment
- 203 Создание контейнеров с помощью XContainer
- 204 Создание объявлений с помощью XDeclaration
- 204 Создание типов документов с помощью XDocumentType
- 206 Создание документов с помощью XDocument
- 206 Создание имен с помощью XName
- 207 Создание пространств имен с помощью XNamespace
- 207 Создание узлов с помощью XNode
- 207 Создание инструкций обработки с помощью XProcessingInstruction
- 209 Создание потоковых элементов с помощью XStreamingElement
- 210 Создание текста с помощью XText
- 211 Создание CData с помощью XCData
- 211 Вывод XML
- 211 Сохранение с помощью XDocument.Save()
- 212 Сохранение с помощью XElement.Save()
- 213 Ввод XML
- 213 Загрузка с помощью XDocument.Load()
- 215 Загрузка с помощью XElement.Load()
- 215 Разбор содержимого с помощью методов XDocument.Parse() или XElement.Parse()
- 216 Обход XML
- 217 Свойства обхода
- 217 Обход вперед с помощью XNode.NextNode
- 218 Обход назад с помощью XNode.PreviousNode
- 220 Методы обхода
- 232 Модификация XML
- 233 Добавление узлов
- 237 Удаление узлов
- 239 Обновление узлов
- 242 Вызов XElement.SetElementValue() на дочерних объектах XElement
- 244 Атрибуты XML
- 244 Создание атрибута
- 244 Обход атрибутов
- 247 Модификация атрибутов
- 251 Аннотации XML
- 251 Добавление аннотаций с помощью XObject.AddAnnotation()
- 251 Обращение к аннотациям с помощью XObject.Annotation() или XObject.Annotations()
- 251 Удаление аннотаций с помощью XObject.RemoveAnnotations()
- 251 Пример аннотаций
- 254 События XML
- 255 XObject.Changing
- 255 XObject.Changed
- 255 Несколько примеров событий
- 258 Трюк, забава или неопределенность?
- 259 Резюме
- 260 Глава 8. Операции LINQ to XML
- 260 Введение в операции LINQ to XML
- 261 Ancestors
- 261 Прототипы
- 261 Примеры
- 265 AncestorsAndSelf
- 265 Прототипы
- 265 Примеры
- 267 Attributes
- 267 Прототипы
- 267 Примеры
- 269 DescendantNodes
- 269 Прототипы
- 269 Примеры
- 270 DescendantNodesAndSelf
- 271 Прототипы
- 271 Примеры
- 272 Descendants
- 272 Прототипы
- 272 Примеры
- 274 DescendantsAndSelf
- 274 Прототипы
- 274 Примеры
- 276 Elements
- 276 Прототипы
- 277 Примеры
- 278 InDocumentOrder
- 278 Прототипы
- 279 Примеры
- 280 Nodes
- 280 Прототипы
- 280 Примеры
- 281 Remove
- 281 Прототипы
- 282 Примеры
- 284 Резюме
- 285 Глава 9. Дополнительные возможности LINQ to XML
- 285 Необходимые пространства имен
- 286 Запросы
- 286 Отсутствие иерархического спуска
- 288 Сложный запрос
- 293 Трансформации
- 294 Трансформации с использованием XSLT
- 295 Трансформация с использованием функционального конструирования
- 298 Советы
- 303 Проверка достоверности
- 303 Расширяющие методы
- 303 Прототипы
- 304 Получение схемы XML
- 306 Примеры
- 316 XPath
- 316 Прототипы
- 316 Примеры
- 317 Резюме
- 319 Часть IV. LINQ to DataSet
- 320 Глава 10. Операции LINQ to DataSet
- 321 Необходимые сборки
- 321 Необходимые пространства имен
- 321 Общий код для примеров
- 322 Операции множеств DataRow
- 323 Distinct
- 326 Except
- 328 Intersect
- 330 Union
- 331 SequenceEqual
- 333 Операции над полями DataRow
- 336 Field<T>
- 341 SetField<T>
- 343 Операции DataTable
- 344 AsEnumerable
- 344 CopyToDataTable<DataRow>
- 345 Примеры
- 349 Резюме
- 350 Глава 11. Дополнительные возможности LINQ to DataSet
- 350 Необходимые пространства имен
- 350 Типизированные DataSet
- 352 Собираем все вместе
- 355 Резюме
- 357 Часть V. LINQ to SQL
- 358 Глава 12. Введение в LINQ to SQL
- 359 Введение в LINQ to SQL
- 360 DataContext
- 361 Сущностные классы
- 361 Ассоциации
- 362 Обнаружение конфликтов параллельного доступа
- 362 Разрешение конфликтов параллельного доступа
- 363 Предварительные условия для запуска примеров
- 363 Получение соответствующей версии базы данных Northwind
- 363 Генерация сущностных классов Northwind
- 364 Генерация XML-файла отображения Northwind
- 364 Использование LINQ to SQL
- 365 IQueryable<T>
- 365 Некоторые общие методы
- 365 GetStringFromDb()
- 366 ExecuteStatementInDb()
- 367 Резюме
- 359 Введение в LINQ to SQL
- 368 Глава 13. Советы и инструменты, связанные с LINQ to SQL
- 368 Введение
- 368 Советы
- 369 Используйте свойство DataContext.Log
- 370 Используйте метод GetChangeSet()
- 370 Подумайте об использовании частичных классов или файлов отображения
- 370 Подумайте об использовании частичных методов
- 370 Инструменты
- 370 SQLMetal
- 376 Object Relational Designer
- 387 Совместное использование SQLMetal и Object Relational Designer
- 388 Резюме
- 389 Глава 14. Операции LINQ to SQL для баз данных
- 389 Предварительные условия для запуска примеров
- 389 Некоторые общие методы
- 390 Использование API-интерфейса LINQ to SQL
- 390 Стандартные операции для баз данных
- 390 Вставки
- 393 Запросы
- 415 Обновления
- 418 Удаления
- 421 Переопределение операторов модификации базы данных
- 421 Переопределение метода Insert
- 421 Переопределение метода Update
- 422 Переопределение метода Delete
- 422 Пример
- 424 Переопределение в Object Relational Designer
- 424 Соображения
- 424 Трансляция SQL
- 426 Резюме
- 389 Предварительные условия для запуска примеров
- 428 Глава 15. Сущностные классы LINQ to SQL
- 428 Предварительные условия для запуска примеров
- 428 Сущностные классы
- 428 Создание сущностных классов
- 456 XML-схема внешнего файла отображения
- 456 Сравнение проекций на сущностные и на несущностные классы
- 461 Расширение сущностных классов с помощью частичных методов
- 462 Важные классы API-интерфейса System.Data.Linq
- 463 EntitySet<T>
- 463 EntityRef<T>
- 465 Table<T>
- 465 IExecuteResult
- 466 ISingleResult<T>
- 467 IMultipleResults
- 468 Резюме
- 469 Глава 16. Класс DataContext в LINQ to SQL
- 469 Предварительные условия для запуска примеров
- 469 Некоторые общие методы
- 469 Использование API-интерфейса LINQ to SQL
- 469 Класс [Your]DataContext
- 470 Класс DataContext
- 472 Класс DataContext реализует интерфейс IDisposable
- 473 Основное назначение
- 478 Время жизни контекста данных
- 479 DataContext() и [Your]DataContext()
- 490 SubmitChanges()
- 496 DatabaseExists()
- 496 CreateDatabase()
- 498 DeleteDatabase()
- 498 CreateMethodCallQuery()
- 500 ExecuteQuery()
- 502 Translate()
- 503 ExecuteCommand()
- 505 ExecuteMethodCall()
- 511 GetCommand()
- 512 GetChangeSet()
- 514 GetTable()
- 515 Refresh()
- 521 Резюме
- 469 Предварительные условия для запуска примеров
- 522 Глава 17. Конфликты параллельного доступа LINQ to SQL
- 522 Предварительные условия для запуска примеров
- 522 Некоторые общие методы
- 522 Использование API-интерфейса LINQ to SQL
- 522 Конфликты параллелизма
- 523 Оптимистический параллелизм
- 533 Пессимистический параллелизм
- 535 Альтернативный подход для средних звеньев и серверов
- 538 Резюме
- 522 Предварительные условия для запуска примеров
- 539 Глава 18. Дополнительные возможности LINQ to SQL
- 539 Предварительные условия для запуска примеров
- 539 Использование API-интерфейса LINQ to SQL
- 539 Использование API-интерфейса LINQ to XML
- 539 Представления базы данных
- 541 Наследование сущностных классов
- 546 Транзакции
- 548 Резюме
- 539 Предварительные условия для запуска примеров
- 549 Часть VI. LINQ to Entities
- 550 Глава 19. Введение в LINQ to Entities
- 551 Введение
- 552 ObjectContext
- 552 Сущностные классы
- 553 Ассоциации
- 553 Предварительные условия для запуска примеров
- 553 Получение соответствующей версии базы данных Northwind
- 553 Генерация сущностной модели данных Northwind
- 556 Использование API-интерфейса LINQ to Entities
- 556 IQueryable<T>
- 556 Некоторые общие методы
- 557 GetStringFromDo()
- 557 ExecuteStatementInDb()
- 558 Резюме
- 551 Введение
- 559 Глава 20. Операции LINQ to Entities
- 559 Предварительные условия для запуска примеров
- 559 Некоторые общие методы
- 559 Стандартные операции базы данных
- 560 Вставки
- 565 Запросы
- 578 Обновления
- 579 Удаления
- 581 Удаление связанных объектов
- 586 Управление параллельным доступом
- 587 Включение проверок параллелизма
- 588 Обработка конфликтов параллелизма
- 592 Резюме
- 559 Предварительные условия для запуска примеров
- 593 Глава 21. Классы LINQ to Entities
- 593 Предварительные условия для запуска примеров
- 593 Класс ObjectContext
- 594 Конструктор
- 595 DatabaseExists()
- 596 DeleteDatabase()
- 596 CreateDatabase()
- 596 SaveChanges()
- 597 Refresh()
- 598 AddObject()
- 599 CreateObject()
- 600 DeleteObject()
- 600 EntityObject
- 600 Конструктор
- 601 Фабричный метод
- 603 Примитивные свойства
- 604 Навигационные свойства
- 606 EntityReference
- 606 Load()
- 607 Value
- 607 EntityCollection
- 607 Add()
- 609 Remove()
- 610 Clear()
- 610 Contains()
- 611 Load()
- 611 Count
- 612 Резюме
- 613 Часть VII. Parallel LINQ
- 614 Глава 22. Введение в Parallel LINQ
- 614 Введение
- 617 Parallel LINQ предназначен для объектов
- 618 Использование API-интерфейса Parallel LINQ
- 618 Резюме
- 614 Введение
- 619 Глава 23. Использование Parallel LINQ
- 619 Создание запроса Parallel LINQ
- 621 Предохранение порядка результатов
- 624 Управление параллелизмом
- 624 Принудительное параллельное выполнение
- 625 Ограничение степени параллелизма
- 625 Обработка исключений
- 628 Запросы без результатов
- 630 Создание диапазонов и повторов
- 630 Резюме
- 631 Глава 24. Операции Parallel LINQ
- 631 Операции создания ParallelQuery
- 631 AsParallel
- 634 Range
- 635 Repeat
- 636 Empty
- 636 Операции управления выполнением
- 636 AsOrdered
- 638 AsUnordered
- 639 AsSequential
- 640 AsEnumerable
- 641 WithDegreeOfParallelism
- 641 Прототипы
- 641 WithExecutionMode
- 642 WithMergeOptions
- 644 Операции преобразования
- 644 Cast
- 645 OfType
- 646 Операция ForAll
- 646 Прототипы
- 646 Примеры
- 646 Резюме
- 631 Операции создания ParallelQuery
- 647 Предметный указатель
Инструкция как скачать книгу Адам Фримен, Джозеф Раттц-мл.: LINQ. Язык интегрированных запросов в C# 2010 для профессионалов в форматах DjVu, PDF, DOC или fb2 совершенно бесплатно.