MoreLINQ
В LINQ to Objects отсутствуют некоторые желательные функции.
Этот проект расширяет LINQ to Objects дополнительными методами, сохраняя при этом дух LINQ.
MoreLINQ доступен для загрузки и установки в виде пакетов NuGet.
Документацию по стабильным и бета-версиям можно найти на сайте morelinq.github.io.
Использование
MoreLINQ можно использовать одним из двух способов. Самый простой — просто импортировать пространство имён MoreLinq, и все методы расширения станут сразу доступны для использования с типами, которые они расширяют (обычно это некоторая реализация IEnumerable). Однако в некоторых очень редких случаях это может привести к конфликтам с другими библиотеками, которые вы можете использовать и которые случайно также расширяют тот же тип методом с идентичным именем и сигнатурой. Это произошло, например, с MoreLINQ, когда Microsoft .NET Framework 4.0 представил методы Zip и MoreLINQ уже имел один. Начиная с версии 3.0 MoreLINQ, вы можете уменьшить вероятность существующих (или даже будущих) конфликтов, индивидуально импортируя только необходимые вам методы расширения с помощью статического импорта, представленного в C# 6:
using static MoreLinq.Extensions.LagExtension;
using static MoreLinq.Extensions.LeadExtension;
В приведённом выше примере будут доступны только методы расширения Lag и Lead.
Помимо методов расширения, MoreLINQ также предлагает обычные статические методы, которые генерируют (а не работают с) последовательности, такие как Unfold, Random, Sequence и другие. Если вы хотите использовать их при статическом импорте других отдельных методов расширения, вы можете сделать это через псевдонимы:
using static MoreLinq.Extensions.LagExtension;
using static MoreLinq.Extensions.LeadExtension;
using MoreEnumerable = MoreLinq.MoreEnumerable;
В приведённом выше примере Lag и Lead будут доступны как методы расширения, а также все обычные статические методы MoreEnumerable, но без каких-либо методов расширения, предлагаемых MoreEnumerable.
Сборка
Для сборки MoreLINQ из исходников вам потребуется:
— .NET Core 2.0 с SDK 2.1; — Mono 5.0, если сборка ведётся на платформах, отличных от Windows.
Затем запустите либо build.cmd, если вы собираете на Windows, либо build.sh, если собираете на macOS или дистрибутиве Linux, поддерживаемом .NET Core.
Некоторый код в проекте генерируется с использованием шаблонов T4. Чтобы перегенерировать код из изменённых шаблонов, запустите MoreLinq\tt.cmd (Windows) или MoreLinq/tt.sh в зависимости от вашей платформы.
Создание документации поддерживается только на Windows и требует Sandcastle Help File Builder (SHFB). Выполнение builddocs.cmd генерирует документацию в каталоге docs/api. Её можно просматривать локально с помощью любого HTTP-сервера статических файлов, такого как http-server.
Операторы
Применяет несколько аккумуляторов последовательно за один проход по последовательности. У этого метода есть 7 перегрузок.
Применяет правоассоциативную функцию аккумулятора к последовательности. Этот оператор является правоассоциативной версией оператора LINQ Aggregate. У этого метода есть 3 перегрузки.
Возвращает последовательность, состоящую из головного элемента и заданных хвостовых элементов.
Утверждает, что все элементы последовательности удовлетворяют заданному условию, в противном случае генерирует исключение. У этого метода есть 2 перегрузки.
Утверждает, что исходная последовательность содержит заданное количество элементов. У этого метода есть 2 перегрузки.
Определяет, больше или равно число элементов в последовательности заданному целому числу.
Определяет, меньше или равно число элементов в последовательности заданному целому числу.
Вставляет элементы последовательности в другую последовательность по указанному индексу с конца последовательности, где ноль всегда представляет последнюю позицию, единица представляет предпоследний элемент, двойка представляет третий с конца элемент и так далее.
Разделяет исходную последовательность на сегменты заданного размера. У этого метода есть 2 перегрузки.
Возвращает декартово произведение двух или более последовательностей путём объединения каждого элемента из последовательностей и применения пользовательской проекции к набору. У этого метода есть 7 перегрузок.
Применяет функцию к каждому элементу исходной последовательности и возвращает новую последовательность элементов результата для исходных элементов, для которых функция возвращает пару (2-кортеж), имеющую true
в качестве первого элемента и результат в качестве второго.
Сравнивает две последовательности и возвращает целое число, которое указывает, имеет ли первая последовательность меньше, столько же или больше элементов, чем вторая последовательность.
Полностью использует заданную последовательность. Этот метод использует немедленное выполнение и не сохраняет данные во время выполнения.
Определяет, находится ли число элементов в последовательности между включающим диапазоном минимального и максимального целых чисел.
Применяет функцию генерации ключа к каждому элементу последовательности и возвращает последовательность уникальных ключей и их количества вхождений в исходной последовательности. У этого метода есть 2 перегрузки.
Предоставляет счётчик обратного отсчёта для заданного количества элементов в конце последовательности, где ноль всегда представляет последний элемент, единица представляет второй с конца элемент, двойка представляет третий с конца элемент и так далее.
Возвращает все различные элементы источника, где «различие» определяется через проекцию и средство сравнения равенства по умолчанию для проецируемого типа. У этого метода есть 2 перегрузки.
Определяет, эквивалентен ли конец первой последовательности второй последовательности. У этого метода есть 2 перегрузки.
Возвращает проекцию кортежей, где каждый кортеж содержит N-й элемент из каждой из последовательностей аргументов. Генерируется исключение, если входные последовательности имеют разную длину. У этого метода есть 3 перегрузки.
Определяет, равно ли число элементов в последовательности заданному целому числу.
Возвращает набор элементов в первой последовательности, которых нет во второй последовательности согласно заданному селектору ключа. У этого метода есть 2 перегрузки.
Исключает элементы из последовательности начиная с заданного индекса.
Возвращает элементы последовательности и возвращается к другой, если исходная последовательность пуста. У этого метода есть 6 перегрузок.
Возвращает последовательность с каждым нулевым элементом. FillForward
Возвращает последовательность, в которой каждая пустая ссылка или значение в исходной последовательности заменяется предыдущей непустой ссылкой или значением из этой последовательности.
У этого метода есть 3 перегрузки.
Flatten
Сглаживает последовательность, содержащую произвольно вложенные последовательности.
У этого метода есть 3 перегрузки.
Fold
Возвращает результат применения функции к последовательности от 1 до 16 элементов.
У этого метода есть 16 перегрузок.
ForEach
Немедленно выполняет заданное действие над каждым элементом в исходной последовательности.
У этого метода есть 2 перегрузки.
From
Возвращает последовательность, содержащую значения, полученные в результате вызова (по порядку) каждой функции в исходной последовательности функций.
У этого метода есть 4 перегрузки.
FullGroupJoin
Выполняет полное групповое соединение между последовательностями и.
У этого метода есть 4 перегрузки.
FullJoin
Выполняет полное внешнее соединение между двумя последовательностями.
У этого метода есть 4 перегрузки.
Generate
Возвращает последовательность значений, последовательно генерируемых функцией-генератором.
GenerateByIndex
Возвращает последовательность значений на основе индексов.
GroupAdjacent
Группирует соседние элементы последовательности в соответствии с указанной функцией выбора ключа.
У этого метода есть 6 перегрузок.
Incremental
Incremental был избыточным по сравнению с Pairwise и поэтому устарел с версии 2.1. В конечном итоге он был удалён в версии 3.0.
Index
Возвращает последовательность индексов, где ключ — это индекс элемента в исходной последовательности, отсчитываемый от нуля.
У этого метода есть 2 перегрузки.
IndexBy
Применяет функцию генерации ключей к каждому элементу последовательности и возвращает последовательность, которая содержит элементы исходной последовательности вместе с его ключом и индексом внутри группы его ключа. Дополнительный аргумент указывает компаратор, который будет использоваться для проверки эквивалентности ключей.
У этого метода есть 2 перегрузки.
Insert
Вставляет элементы последовательности в другую последовательность по указанному индексу.
Interleave
Чередует элементы двух или более последовательностей в одну последовательность, пропуская последовательности по мере их использования.
Lag
Создаёт проекцию последовательности путём оценки пар элементов, разделённых отрицательным смещением.
У этого метода есть 2 перегрузки.
Lead
Создаёт проекцию последовательности путём оценки пар элементов, разделённых положительным смещением.
У этого метода есть 2 перегрузки.
LeftJoin
Выполняет левое внешнее соединение между двумя последовательностями.
У этого метода есть 4 перегрузки.
MaxBy
Возвращает максимумы (максимальные элементы) данной последовательности на основе заданной проекции.
У этого метода есть 2 перегрузки.
MinBy
Возвращает минимумы (минимальные элементы) данной последовательности на основе заданной проекции.
У этого метода есть 2 перегрузки.
Move
Возвращает последовательность с диапазоном элементов в исходной последовательности, перемещённым на новое смещение.
OrderBy
Сортирует элементы последовательности в определённом направлении (возрастание, убывание) в соответствии с ключом.
У этого метода есть 2 перегрузки.
OrderedMerge
Объединяет две упорядоченные последовательности в одну. Если элементы равны в обеих последовательностях, элемент из первой последовательности возвращается в результирующую последовательность.
У этого метода есть 7 перегрузок.
Pad
Дополняет последовательность значениями по умолчанию, если она уже, чем заданная ширина.
У этого метода есть 3 перегрузки.
PadStart
Дополняет последовательность значениями по умолчанию в начале, если она уже, чем заданная ширина.
У этого метода есть 3 перегрузки.
Pairwise
Возвращает последовательность результатов применения функции к каждому элементу в исходной последовательности и его предшественнику, за исключением первого элемента, который возвращается только как предшественник второго элемента.
PartialSort
Комбинирует OrderBy (где элемент является ключом) и Take в одной операции.
У этого метода есть 4 перегрузки.
Partition
Разделяет последовательность предикатом. Вот перевод текста на русский язык:
или группировка по логическим ключам или до 3 наборов ключей.
Этот метод имеет 10 перегрузок.
Генерирует последовательность списков, представляющих перестановки исходной последовательности.
Выполняет заданное действие над каждым элементом в исходной последовательности и выдаёт его.
Добавляет одно значение к последовательности.
Выполняет предварительное сканирование (исключительная префиксная сумма) последовательности элементов.
Возвращает бесконечную последовательность случайных целых чисел с использованием стандартного генератора случайных чисел .NET.
У этого метода есть 6 перегрузок.
Возвращает бесконечную последовательность двойных случайных значений от 0,0 до 1,0.
У этого метода есть 2 перегрузки.
Возвращает последовательность указанного размера случайных элементов из исходной последовательности.
У этого метода есть 2 перегрузки.
Ранжирует каждый элемент в последовательности в порядке убывания с использованием компаратора по умолчанию.
У этого метода есть 2 перегрузки.
Ранжирует каждый элемент в последовательности в порядке убывания по указанному ключу с использованием компаратора по умолчанию.
У этого метода есть 2 перегрузки.
Повторяет последовательность бесконечно или определённое количество раз.
У этого метода есть 2 перегрузки.
Возвращает одноэлементную последовательность, содержащую предоставленный элемент.
Выполняет правое внешнее соединение между двумя последовательностями.
У этого метода есть 4 перегрузки.
Кодирует последовательность методом «сжатия по длине», преобразуя последовательные экземпляры одного и того же элемента в KeyValuePair<T, int>, представляющий элемент и его количество вхождений.
У этого метода есть 2 перегрузки.
Сканирует (включает префиксную сумму) последовательность элементов.
У этого метода есть 2 перегрузки.
Применяет функцию-аккумулятор к ключам элементов последовательности, возвращая ключи вместе с промежуточными состояниями аккумулятора.
У этого метода есть 2 перегрузки.
Сканирует справа (ассоциативное сканирование) последовательность элементов. Этот оператор является правоассоциативной версией оператора Scan.
У этого метода есть 2 перегрузки.
Делит последовательность на несколько последовательностей с помощью детектора сегментов, основанного на исходной последовательности.
У этого метода есть 3 перегрузки.
Генерирует последовательность целых чисел в указанном диапазоне (включительно).
У этого метода есть 2 перегрузки.
Возвращает элементы в случайном порядке из исходной последовательности.
У этого метода есть 2 перегрузки.
Обходит указанное количество элементов в конце последовательности.
Пропускает элементы из входной последовательности до тех пор, пока данный предикат не вернёт true при применении к текущему исходному элементу; этот элемент будет последним пропущенным.
Извлекает элементы из последовательности по определённому нулевому базовому начальному индексу.
Объединяет две или более последовательностей, которые находятся в общем порядке (по возрастанию или по убыванию), в одну последовательность, которая сохраняет этот порядок.
У этого метода есть 2 перегрузки.
Разделяет исходную последовательность разделителем.
У этого метода есть 12 перегрузок.
Определяет, эквивалентен ли начало первой последовательности второй последовательности.
У этого метода есть 2 перегрузки.
Возвращает последовательность, представляющую все подмножества любого размера, входящие в исходную последовательность.
У этого метода есть 2 перегрузки.
Возвращает последовательность в результате применения функции к каждому элементу в исходной последовательности с дополнительными параметрами, указывающими, является ли элемент первым и/или последним в последовательности.
Возвращает каждый N-й элемент исходной последовательности.
Возвращает указанное количество смежных элементов с конца последовательности.
Возвращает элементы из входной последовательности до тех пор, пока указанный предикат не вернёт true при применении к текущему исходному элементу; этот элемент будет последним возвращённым.
Выполняет последующее упорядочение элементов в последовательности в определённом направлении (по возрастанию, по убыванию) в соответствии с ключом.
У этого метода есть 2 перегрузки.
Создаёт массив из... Вот перевод текста на русский язык:
IEnumerable, где используется функция для определения индекса, по которому элемент будет помещён в массив.
Этот метод имеет 6 перегрузок.
Добавляет элементы последовательности в виде строк заданного объекта с набором лямбда-выражений, указывающих, какие члены (свойство или поле) каждого элемента последовательности будут предоставлять значения столбцов.
У этого метода есть 4 перегрузки.
Создаёт строку с разделителями из последовательности значений. Используемый разделитель зависит от текущей культуры исполняемого потока.
Метод имеет 15 перегрузок.
Создает словарь из последовательности элементов «ключ-значение» или кортежей из 2 элементов.
Имеет 4 перегрузки.
Возвращает хеш-набор исходных элементов с использованием средства сравнения равенства по умолчанию для типа.
Есть 2 перегрузки.
Создает поиск из последовательности элементов «ключ-значение» или кортежей из 2 элементов.
4 перегрузки.
Транспонирует строки последовательности в столбцы.
Обходит дерево в ширину, начиная с корневого узла и используя пользовательскую функцию для получения дочерних элементов на каждом узле дерева.
Обход дерева в глубину, начиная с корня и используя пользовательскую функцию для получения потомков на каждом узле.
Отслеживает элементы исходной последовательности для диагностики.
3 перегрузки.
Возвращает последовательность, сгенерированную применением состояния к функции генератора, и на основе её результата определяет, должна ли последовательность иметь следующий элемент и его значение, а также следующее состояние в рекурсивном вызове.
Преобразует последовательность в серию подпоследовательностей, представляющих оконный набор исходной последовательности.
Преобразует последовательность в серию подпоследовательностей, представляющих оконный набор исходной последовательности.
Этот метод устарел и будет удалён в будущей версии. Вместо него используйте Window
.
Создаёт выровненное по левому краю скользящее окно над исходной последовательностью заданного размера.
Создаёт выровненное по правому краю скользящее окно над исходной последовательностью заданного размера.
Возвращает проекцию кортежей, где каждый кортеж содержит N-й элемент из каждой из последовательностей аргументов. Результирующая последовательность всегда будет такой же длины, как самая длинная из входных последовательностей, где для заполнения используется значение по умолчанию каждого из более коротких типов элементов последовательности.
3 перегрузки.
Возвращает проекцию кортежей, где каждый кортеж содержит N-й элемент из каждой из последовательностей аргументов. Полученная последовательность имеет длину самой короткой входной последовательности.
3 перегрузки.
ЭТИ МЕТОДЫ ЭКСПЕРИМЕНТАЛЬНЫЕ. ОНИ МОГУТ БЫТЬ НЕСТАБИЛЬНЫМИ И НЕПРОТЕСТИРОВАННЫМИ. ОНИ МОГУТ БЫТЬ УДАЛЕНЫ ИЗ БУДУЩЕГО ОСНОВНОГО ИЛИ МИНОРНОГО РЕЛИЗА И ВОЗМОЖНО БЕЗ ПРЕДУПРЕЖДЕНИЯ. ИСПОЛЬЗУЙТЕ ИХ НА СВОЙ СТРАХ И РИСК. МЕТОДЫ ОПУБЛИКОВАНЫ ДЛЯ ЭКСПЕРИМЕНТОВ В ПОЛЕВЫХ УСЛОВИЯХ, ЧТОБЫ ПОЛУЧИТЬ ОБРАТНУЮ СВЯЗЬ ОБ ИХ ПОЛЕЗНОСТИ И ДЕФЕКТАХ ДИЗАЙНА/РЕАЛИЗАЦИИ.
Использование экспериментальных методов требует импорта пространства имён MoreLinq.Experimental
.
Применяет несколько запросов аккумулятора последовательно за один проход по последовательности.
8 перегрузок.
Создаёт запрос последовательности, который передаёт результат каждой задачи в исходной последовательности по мере её асинхронного завершения.
2 перегрузки.
Дожидается завершения всех асинхронных вычислений независимо от того, успешны они или нет. Дополнительный аргумент указывает на функцию, которая проецирует окончательный результат с учётом исходного элемента и завершённой задачи.
Создаёт последовательность, которая лениво кэширует источник при первом повторении, повторно используя кэш после этого для будущих повторений. Если источник уже кэширован или буферизован, он возвращается дословно.
Возвращает единственный элемент последовательности, имеющей только один элемент. Если последовательность имеет ноль или несколько элементов... Этот метод имеет 2 перегрузки.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )