|
Вопрос по Курсу: "Параллельное программирование с использованием 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 | Возвращает последовательность, представляющую собой объединение двух других последовательностей. |
