1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/gsbhz-MoreLINQ

Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

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.

Операторы

Acquire Обеспечивает успешное получение всей исходной последовательности одноразовых объектов. Если получение какого-либо из них завершается неудачно, то все успешно полученные до этого момента объекты удаляются.

Aggregate

Применяет несколько аккумуляторов последовательно за один проход по последовательности. У этого метода есть 7 перегрузок.

AggregateRight

Применяет правоассоциативную функцию аккумулятора к последовательности. Этот оператор является правоассоциативной версией оператора LINQ Aggregate. У этого метода есть 3 перегрузки.

Append

Возвращает последовательность, состоящую из головного элемента и заданных хвостовых элементов.

Assert

Утверждает, что все элементы последовательности удовлетворяют заданному условию, в противном случае генерирует исключение. У этого метода есть 2 перегрузки.

AssertCount

Утверждает, что исходная последовательность содержит заданное количество элементов. У этого метода есть 2 перегрузки.

AtLeast

Определяет, больше или равно число элементов в последовательности заданному целому числу.

AtMost

Определяет, меньше или равно число элементов в последовательности заданному целому числу.

Backsert

Вставляет элементы последовательности в другую последовательность по указанному индексу с конца последовательности, где ноль всегда представляет последнюю позицию, единица представляет предпоследний элемент, двойка представляет третий с конца элемент и так далее.

Batch

Разделяет исходную последовательность на сегменты заданного размера. У этого метода есть 2 перегрузки.

Cartesian

Возвращает декартово произведение двух или более последовательностей путём объединения каждого элемента из последовательностей и применения пользовательской проекции к набору. У этого метода есть 7 перегрузок.

Choose

Применяет функцию к каждому элементу исходной последовательности и возвращает новую последовательность элементов результата для исходных элементов, для которых функция возвращает пару (2-кортеж), имеющую true в качестве первого элемента и результат в качестве второго.

CompareCount

Сравнивает две последовательности и возвращает целое число, которое указывает, имеет ли первая последовательность меньше, столько же или больше элементов, чем вторая последовательность.

Consume

Полностью использует заданную последовательность. Этот метод использует немедленное выполнение и не сохраняет данные во время выполнения.

CountBetween

Определяет, находится ли число элементов в последовательности между включающим диапазоном минимального и максимального целых чисел.

CountBy

Применяет функцию генерации ключа к каждому элементу последовательности и возвращает последовательность уникальных ключей и их количества вхождений в исходной последовательности. У этого метода есть 2 перегрузки.

CountDown

Предоставляет счётчик обратного отсчёта для заданного количества элементов в конце последовательности, где ноль всегда представляет последний элемент, единица представляет второй с конца элемент, двойка представляет третий с конца элемент и так далее.

DistinctBy

Возвращает все различные элементы источника, где «различие» определяется через проекцию и средство сравнения равенства по умолчанию для проецируемого типа. У этого метода есть 2 перегрузки.

EndsWith

Определяет, эквивалентен ли конец первой последовательности второй последовательности. У этого метода есть 2 перегрузки.

EquiZip

Возвращает проекцию кортежей, где каждый кортеж содержит N-й элемент из каждой из последовательностей аргументов. Генерируется исключение, если входные последовательности имеют разную длину. У этого метода есть 3 перегрузки.

Exactly

Определяет, равно ли число элементов в последовательности заданному целому числу.

ExceptBy

Возвращает набор элементов в первой последовательности, которых нет во второй последовательности согласно заданному селектору ключа. У этого метода есть 2 перегрузки.

Exclude

Исключает элементы из последовательности начиная с заданного индекса.

FallbackIfEmpty

Возвращает элементы последовательности и возвращается к другой, если исходная последовательность пуста. У этого метода есть 6 перегрузок.

FillBackward

Возвращает последовательность с каждым нулевым элементом. 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 перегрузок.

Перестановки

Генерирует последовательность списков, представляющих перестановки исходной последовательности.

Канал

Выполняет заданное действие над каждым элементом в исходной последовательности и выдаёт его.

Добавить

Добавляет одно значение к последовательности.

PreScan

Выполняет предварительное сканирование (исключительная префиксная сумма) последовательности элементов.

Случайный

Возвращает бесконечную последовательность случайных целых чисел с использованием стандартного генератора случайных чисел .NET.

У этого метода есть 6 перегрузок.

RandomDouble

Возвращает бесконечную последовательность двойных случайных значений от 0,0 до 1,0.

У этого метода есть 2 перегрузки.

RandomSubset

Возвращает последовательность указанного размера случайных элементов из исходной последовательности.

У этого метода есть 2 перегрузки.

Ранг

Ранжирует каждый элемент в последовательности в порядке убывания с использованием компаратора по умолчанию.

У этого метода есть 2 перегрузки.

RankBy

Ранжирует каждый элемент в последовательности в порядке убывания по указанному ключу с использованием компаратора по умолчанию.

У этого метода есть 2 перегрузки.

Повторить

Повторяет последовательность бесконечно или определённое количество раз.

У этого метода есть 2 перегрузки.

Возврат

Возвращает одноэлементную последовательность, содержащую предоставленный элемент.

RightJoin

Выполняет правое внешнее соединение между двумя последовательностями.

У этого метода есть 4 перегрузки.

RunLengthEncode

Кодирует последовательность методом «сжатия по длине», преобразуя последовательные экземпляры одного и того же элемента в KeyValuePair<T, int>, представляющий элемент и его количество вхождений.

У этого метода есть 2 перегрузки.

Scan

Сканирует (включает префиксную сумму) последовательность элементов.

У этого метода есть 2 перегрузки.

ScanBy

Применяет функцию-аккумулятор к ключам элементов последовательности, возвращая ключи вместе с промежуточными состояниями аккумулятора.

У этого метода есть 2 перегрузки.

ScanRight

Сканирует справа (ассоциативное сканирование) последовательность элементов. Этот оператор является правоассоциативной версией оператора Scan.

У этого метода есть 2 перегрузки.

Сегмент

Делит последовательность на несколько последовательностей с помощью детектора сегментов, основанного на исходной последовательности.

У этого метода есть 3 перегрузки.

Последовательность

Генерирует последовательность целых чисел в указанном диапазоне (включительно).

У этого метода есть 2 перегрузки.

Перемешать

Возвращает элементы в случайном порядке из исходной последовательности.

У этого метода есть 2 перегрузки.

SkipLast

Обходит указанное количество элементов в конце последовательности.

SkipUntil

Пропускает элементы из входной последовательности до тех пор, пока данный предикат не вернёт true при применении к текущему исходному элементу; этот элемент будет последним пропущенным.

Срез

Извлекает элементы из последовательности по определённому нулевому базовому начальному индексу.

SortedMerge

Объединяет две или более последовательностей, которые находятся в общем порядке (по возрастанию или по убыванию), в одну последовательность, которая сохраняет этот порядок.

У этого метода есть 2 перегрузки.

Разделить

Разделяет исходную последовательность разделителем.

У этого метода есть 12 перегрузок.

Начинается с

Определяет, эквивалентен ли начало первой последовательности второй последовательности.

У этого метода есть 2 перегрузки.

Подмножества

Возвращает последовательность, представляющую все подмножества любого размера, входящие в исходную последовательность.

У этого метода есть 2 перегрузки.

TagFirstLast

Возвращает последовательность в результате применения функции к каждому элементу в исходной последовательности с дополнительными параметрами, указывающими, является ли элемент первым и/или последним в последовательности.

TakeEvery

Возвращает каждый N-й элемент исходной последовательности.

Взять последний

Возвращает указанное количество смежных элементов с конца последовательности.

TakeUntil

Возвращает элементы из входной последовательности до тех пор, пока указанный предикат не вернёт true при применении к текущему исходному элементу; этот элемент будет последним возвращённым.

Затем по

Выполняет последующее упорядочение элементов в последовательности в определённом направлении (по возрастанию, по убыванию) в соответствии с ключом.

У этого метода есть 2 перегрузки.

ToArrayByIndex

Создаёт массив из... Вот перевод текста на русский язык:

IEnumerable, где используется функция для определения индекса, по которому элемент будет помещён в массив.

Этот метод имеет 6 перегрузок.

ToDataTable

Добавляет элементы последовательности в виде строк заданного объекта с набором лямбда-выражений, указывающих, какие члены (свойство или поле) каждого элемента последовательности будут предоставлять значения столбцов.

У этого метода есть 4 перегрузки.

ToDelimitedString

Создаёт строку с разделителями из последовательности значений. Используемый разделитель зависит от текущей культуры исполняемого потока.

Метод имеет 15 перегрузок.

ToDictionary

Создает словарь из последовательности элементов «ключ-значение» или кортежей из 2 элементов.

Имеет 4 перегрузки.

ToHashSet

Возвращает хеш-набор исходных элементов с использованием средства сравнения равенства по умолчанию для типа.

Есть 2 перегрузки.

ToLookup

Создает поиск из последовательности элементов «ключ-значение» или кортежей из 2 элементов.

4 перегрузки.

Transpose

Транспонирует строки последовательности в столбцы.

TraverseBreadthFirst

Обходит дерево в ширину, начиная с корневого узла и используя пользовательскую функцию для получения дочерних элементов на каждом узле дерева.

TraverseDepthFirst

Обход дерева в глубину, начиная с корня и используя пользовательскую функцию для получения потомков на каждом узле.

Trace

Отслеживает элементы исходной последовательности для диагностики.

3 перегрузки.

Unfold

Возвращает последовательность, сгенерированную применением состояния к функции генератора, и на основе её результата определяет, должна ли последовательность иметь следующий элемент и его значение, а также следующее состояние в рекурсивном вызове.

Window

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

Windowed

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

Этот метод устарел и будет удалён в будущей версии. Вместо него используйте Window.

WindowLeft

Создаёт выровненное по левому краю скользящее окно над исходной последовательностью заданного размера.

WindowRight

Создаёт выровненное по правому краю скользящее окно над исходной последовательностью заданного размера.

ZipLongest

Возвращает проекцию кортежей, где каждый кортеж содержит N-й элемент из каждой из последовательностей аргументов. Результирующая последовательность всегда будет такой же длины, как самая длинная из входных последовательностей, где для заполнения используется значение по умолчанию каждого из более коротких типов элементов последовательности.

3 перегрузки.

ZipShortest

Возвращает проекцию кортежей, где каждый кортеж содержит N-й элемент из каждой из последовательностей аргументов. Полученная последовательность имеет длину самой короткой входной последовательности.

3 перегрузки.

Экспериментальные операторы

ЭТИ МЕТОДЫ ЭКСПЕРИМЕНТАЛЬНЫЕ. ОНИ МОГУТ БЫТЬ НЕСТАБИЛЬНЫМИ И НЕПРОТЕСТИРОВАННЫМИ. ОНИ МОГУТ БЫТЬ УДАЛЕНЫ ИЗ БУДУЩЕГО ОСНОВНОГО ИЛИ МИНОРНОГО РЕЛИЗА И ВОЗМОЖНО БЕЗ ПРЕДУПРЕЖДЕНИЯ. ИСПОЛЬЗУЙТЕ ИХ НА СВОЙ СТРАХ И РИСК. МЕТОДЫ ОПУБЛИКОВАНЫ ДЛЯ ЭКСПЕРИМЕНТОВ В ПОЛЕВЫХ УСЛОВИЯХ, ЧТОБЫ ПОЛУЧИТЬ ОБРАТНУЮ СВЯЗЬ ОБ ИХ ПОЛЕЗНОСТИ И ДЕФЕКТАХ ДИЗАЙНА/РЕАЛИЗАЦИИ.

Использование экспериментальных методов требует импорта пространства имён MoreLinq.Experimental.

Aggregate

Применяет несколько запросов аккумулятора последовательно за один проход по последовательности.

8 перегрузок.

Await

Создаёт запрос последовательности, который передаёт результат каждой задачи в исходной последовательности по мере её асинхронного завершения.

2 перегрузки.

AwaitCompletion

Дожидается завершения всех асинхронных вычислений независимо от того, успешны они или нет. Дополнительный аргумент указывает на функцию, которая проецирует окончательный результат с учётом исходного элемента и завершённой задачи.

Memoize

Создаёт последовательность, которая лениво кэширует источник при первом повторении, повторно используя кэш после этого для будущих повторений. Если источник уже кэширован или буферизован, он возвращается дословно.

TrySingle

Возвращает единственный элемент последовательности, имеющей только один элемент. Если последовательность имеет ноль или несколько элементов... Этот метод имеет 2 перегрузки.

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Описание недоступно Развернуть Свернуть
MIT
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/gsbhz-MoreLINQ.git
git@api.gitlife.ru:oschina-mirror/gsbhz-MoreLINQ.git
oschina-mirror
gsbhz-MoreLINQ
gsbhz-MoreLINQ
master