Начиная с .NET 4.0, в пространство имен System.Linq
был добавлен класс ParallelEnumerable
, позволяющий выполнять запросы к источнику данных в параллельном режиме. При обработке запроса, по умолчанию, LINQ обрабатывает все элементы коллекции последовательно, однако, PLINQ позволяет разбить исходную последовательность элементов на сегменты и обработать каждый сегмент параллельно, используя возможности всех процессоров в системе. Для того, чтобы воспользоваться возможностями PLINQ необходимо явно указать платформе, что мы хотим обработать запрос в параллельном режиме. Для этого мы должны использовать метод AsParallel()
.
LINQ
Делегаты в LINQ
Когда знакомишься с какой-то новой для себя темой по примерам, то достаточно быстро привыкаешь использовать новые «фичи» на автомате, особенно не вникая в то, какие ещё могут быть варианты работы. Например, при работе с LINQ активно используются лямбда-выражения, потому что это удобный и лаконичный способ работы с анонимными методами. Вместе с этим, в LINQ используются делегаты, которые мы можем, при необходимости, использовать как обычные методы. Сегодня рассмотрим как использовать делегаты в LINQ и как понять «что от нас хотят разработчики LINQ», читая исходный код LINQ
LINQ в C#: отложенное и немедленное выполнение запросов LINQ
Работу методов LINQ можно разделить на три этапа: 1. получение источника данных, 2. создание запроса, 3. выполнение запроса. В зависимости от того, какой метод используется мы можем получить результат как немедленно, так и в момент, когда данные запроса будут действительно нам необходимы, например, при попытке перебора элементов последовательности в цикле.
LINQ в C#: краткий справочник методов LINQ
В этой статье собраны все методы LINQ, которые рассматривались в блоге. По каждому методу дано его краткое описание, указан способ выполнения (отложенное или немедленное выполнение) и ссылка на статью блога в которой демонстрируется пример использования метода.
LINQ в C#: сравнение последовательностей
Иногда, при работе с несколькими коллекциями или последовательностями элементов может потребоваться определить сам факт равенства или неравенства всех элементов в одной коллекции всем элементам во второй коллекции. В этом случае нам нет необходимости выполнять операции Except
или Intersect
над коллекциями. Для сравнения последовательностей элементов в LINQ используется метод SequenceEqual
.
LINQ в C#: преобразование типов данных
Методы преобразования изменяют тип входных объектов. Эти методы LINQ можно использовать, например, для того, чтобы скрыть реализацию коллекции или для того, чтобы запрос LINQ был выполнен немедленно.
Лабораторная работа по C#. Определить частоту чисел в массиве (LINQ)
Задача: дан массив целых чисел. Необходимо: 1) вывести на экран уникальные числа из массива и частоту с которой эти числа встречаются в массиве; 2) вывести N самых часто встречающихся в массиве чисел.
LINQ в C#: объединение коллекций
Кроме фильтрации, выбора и группировки последовательностей в LINQ C# также предусмотрен ряд методов, позволяющих объединять как однородные, так и разнородные (содержащие элементы различных типов данных) коллекции.
LINQ в C#: проверка элементов последовательности
При работе с различными коллекциями и списками элементов, часто бывает необходимо проверить соответствуют ли элементы этого набора данных определенным условиям. В LINQ для проверки элементов последовательностей применяются методы All
, Any
и Contains
.
LINQ в C#: группировка элементов последовательности
При работе с последовательностями (списками) элементов бывает необходимым сгруппировать эти элементы по определенному признаку. Для этих целей в LINQ имеется метод расширения GroupBy
.