Опубликован: 23.01.2013 | Уровень: для всех | Доступ: платный | ВУЗ: Томский политехнический университет
Лекция 8:

Parallel LINQ (PLINQ)

Аннотация: В рамках данной лекции будут рассмотрены следующие вопросы: описание LINQ; примеры LINQ - запросов; работа с простыми массивами данных; работа с массивами и коллекциями классов; введение в PLINQ; метод AsParallel; пример использования PLINQ запроса.

Описание LINQ

LINQ (Language-Integrated Query) или язык интегрированных запросов - набор функций, который расширяет возможности синтаксиса языков программирования C# и Visual Basic. Проще говоря, LINQ это язык запросов, который возвращает набор объектов, одиночный объект или подмножество полей из объекта, либо набора объектов. В LINQ этот возвращенный набор называется последовательностью (sequence), последовательности LINQ чаще всего используют тип IEnumerable<T>, где Т - тип данных объектов, находящихся в последовательности (например IEnumerable<string>, IEnumerable<[] int>).

LINQ включает в себя около 50 стандартных операций, которые в свою очередь делятся на 2 группы - отложенные операции (выполняются при вызове) и не отложенные операции (выполняются в первую очередь). На Рис. 11.1 представлена схема данных запросов.

Схема стандартных операторов используемых LINQ

увеличить изображение
Рис. 11.1. Схема стандартных операторов используемых LINQ

Полный список методов, которые используются в LINQ-запросах, представлен в Табл. 11.1.

Таблица 11.1. Список методов используемых в LINQ-запросах
Оператор Описание
Объединение
Aggregate Применяет к последовательности пользовательский метод.
Average Вычисляет среднее для числовой последовательности.
Count Возвращает количество элементов в последовательности (целочисленное значение).
LongCount Возвращает количество элементов в последовательности (значение в диапазоне LongInt).
Min Возвращает наименьшее значение для числовой последовательности.
Max Возвращает наибольшее значение для числовой последовательности.
Sum Складывает члены числовой последовательности.
Конкатенация
Concat Соединяет две последовательности в одну.
Преобразование
Cast Преобразует элементы последовательности в элементы указанного типа.
OfType Выбирает из элементов последовательности элементы указанного типа.
ToArray Возвращает массив из элементов последовательности.
ToDictionary Возвращает словарь из элементов последовательности.
ToList Возвращает список из элементов последовательности.
ToLookup Возвращает результаты поиска по последовательности.
ToSequence Возвращает последовательность IEnumerable.
Элемент
DefaultIfEmpty Создает стандартный элемент для пустой последовательности.
ElementAt Возвращает элемент последовательности по указанному индексу.
ElementAtOrDefault Возвращает элемент по указанному индексу или стандартный элемент (если индекс вышел за пределы диапазона).
First Возвращает первый элемент последовательности.
FirstOrDefault Возвращает первый элемент последовательности или стандартный элемент (если нужный элемент не найден).
Last Возвращает последний элемент последовательности.
LastOrDefault Возвращает последний элемент последовательности или стандартный элемент (если нужный элемент не найден).
Single Возвращает единственный элемент последовательности.
SingleOrDefault Возвращает единственный элемент последовательности или стандартный элемент (если нужный элемент не найден).
Равенство
SequenceEqual Проверяет эквивалентность двух последовательностей.
Создание
Empty Создает пустую последовательность.
Range Создает последовательность в соответствии с заданным диапазоном.
Repeat Создает последовательность, повторяя значение заданное количество раз.
Группировка
GroupBy Группирует элементы последовательности указанным образом.
Присоединение
GroupJoin Выполняет группированное соединение двух последовательностей.
Join Выполняет внутреннее соединение двух последовательностей.
Упорядочение
OrderBy Упорядочивает элементы последовательности по заданным значениям в порядке возрастания.
OrderByDescending Упорядочивает элементы последовательности по заданным значениям в порядке убывания.
ThenBy Упорядочивает элементы уже упорядоченной последовательности в порядке возрастания.
ThenByDescending Упорядочивает элементы уже упорядоченной последовательности в порядке убывания.
Reverse Зеркально отображает порядок расположения элементов в последовательности.
Разделение на части
Skip Возвращает последовательность, в которой указанное число элементов пропущено.
SkipWhile Возвращает последовательность, в которой пропущены элементы, не соответствующие указанному условию.
Take Возвращает последовательность, в которую включается указанное число элементов.
TakeWhile Возвращает последовательность, в которую включаются элементы, соответствующие указанному условию.
Проекция
Select Создает проекцию части последовательности.
SelectMany Создает проекцию части последовательности по принципу "один ко многим".
Кванторы
All Определяет соответствие всех элементов последовательности указанным условиям.
Any Определяет, есть ли в последовательность элементы, удовлетворяющие указанным условиям.
Contains Определяет, есть ли в последовательности указанный элемент.
Ограничение
Where Сортирует члены последовательности.
Настройка
Distinct Возвращает последовательность без повторяющихся элементов.
Except Возвращает последовательность, представляющую собой разность двух других последовательностей.
Intersect Возвращает последовательность, представляющую собой пересечение двух других последовательностей.
Union Возвращает последовательность, представляющую собой объединение двух других последовательностей.
Владимир Каширин
Владимир Каширин

Вопрос по Курсу: "Параллельное программирование с использованием MS VisualStudia 2010".

При компиляции Самостоятельного задания (одновременная отрисовка прямоугольников, эллипсов и выдача в текст-бокс случайного числа) среда предупреждает: suspend - устаревшая команда; примените monitor, mutex и т.п.

Создаётся впечатление, что Задание создано в более поздней среде, чем VS 2010.

Александр Гаврилов
Александр Гаврилов
Россия
Роман Дмитриев
Роман Дмитриев
Россия, Москва