Вопрос по Курсу: "Параллельное программирование с использованием MS VisualStudia 2010". При компиляции Самостоятельного задания (одновременная отрисовка прямоугольников, эллипсов и выдача в текст-бокс случайного числа) среда предупреждает: suspend - устаревшая команда; примените monitor, mutex и т.п. Создаётся впечатление, что Задание создано в более поздней среде, чем VS 2010. |
Parallel LINQ (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.
Оператор | Описание |
---|---|
Объединение | |
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 | Возвращает последовательность, представляющую собой объединение двух других последовательностей. |