morelinq 3.2.0

This project enhances LINQ to Objects with the following methods: Acquire, Aggregate (some EXPERIMENTAL), AggregateRight, Append, Assert, AssertCount, AtLeast, AtMost, Await (EXPERIMENTAL), AwaitCompletion (EXPERIMENTAL), Backsert, Batch, Cartesian, Choose, CountBetween, CompareCount, CountBy, CountDown, Consume, DistinctBy, EndsWith, EquiZip, Exactly, ExceptBy, Exclude, FallbackIfEmpty, FillBackward, FillForward, Flatten, Fold, ForEach, From, FullGroupJoin, FullJoin, Generate, GenerateByIndex, GroupAdjacent, Index, Insert, Interleave, Lag, Lead, LeftJoin, MaxBy, Memoize, MinBy, Move, OrderBy, OrderedMerge, Pad, PadStart, Pairwise, PartialSort, PartialSortBy, Partition, Permutations, Pipe, Prepend, PreScan, Random, RandomDouble, RandomSubset, Rank, RankBy, Repeat, RightJoin, RunLengthEncode, Scan, ScanRight, Segment, Sequence, Shuffle, SkipLast, SkipUntil, Slice, SortedMerge, Split, StartsWith, Subsets, TagFirstLast, TakeEvery, TakeLast, TakeUntil, ThenBy, ToArrayByIndex, ToDataTable, ToDelimitedString, ToDictionary, ToHashSet, ToLookup, Trace, Transpose, TraverseBreadthFirst, TraverseDepthFirst, Unfold, Window, WindowLeft, WindowRight, ZipLongest, ZipShortest

Install-Package morelinq -Version 3.2.0
dotnet add package morelinq --version 3.2.0
<PackageReference Include="morelinq" Version="3.2.0" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add morelinq --version 3.2.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.

Usage

MoreLINQ can be used in one of two ways. The simplest is to just import the MoreLinq namespace and all extension methods become instantly available for you to use on the types they extend. In some very rare instances, however, this cause conflicts with other libraries you may be using that incidentally also extend the same type with an identically named method and signature. This happened with MoreLINQ, for example, when Microsoft .NET Framework 4.0 introduced Zip and MoreLINQ already had one. Starting with version 3.0 of MoreLINQ, you can reduce the potential for present (or even future) conflicts by individually importing just the extension methods you need using the static imports feature introduced in C# 6:

using static MoreLinq.Extensions.LagExtension;
using static MoreLinq.Extensions.LeadExtension;

In the example above, only the Lag and Lead extension methods will be available in scope.

Apart from extension methods, MoreLINQ also offers regular static method that generate (instead of operating on) sequences, like Unfold, Random, Sequence and others. If you want to use these while statically importing other individual extension methods, you can do so via aliasing:

using static MoreLinq.Extensions.LagExtension;
using static MoreLinq.Extensions.LeadExtension;
using MoreEnumerable = MoreLinq.MoreEnumerable;

In the example above, Lag and Lead will be available as extension methods as well as all the regular static methods on MoreEnumerable but without any of the extension methods offered by MoreEnumerable.

Usage

MoreLINQ can be used in one of two ways. The simplest is to just import the MoreLinq namespace and all extension methods become instantly available for you to use on the types they extend. In some very rare instances, however, this cause conflicts with other libraries you may be using that incidentally also extend the same type with an identically named method and signature. This happened with MoreLINQ, for example, when Microsoft .NET Framework 4.0 introduced Zip and MoreLINQ already had one. Starting with version 3.0 of MoreLINQ, you can reduce the potential for present (or even future) conflicts by individually importing just the extension methods you need using the static imports feature introduced in C# 6:

using static MoreLinq.Extensions.LagExtension;
using static MoreLinq.Extensions.LeadExtension;

In the example above, only the Lag and Lead extension methods will be available in scope.

Apart from extension methods, MoreLINQ also offers regular static method that generate (instead of operating on) sequences, like Unfold, Random, Sequence and others. If you want to use these while statically importing other individual extension methods, you can do so via aliasing:

using static MoreLinq.Extensions.LagExtension;
using static MoreLinq.Extensions.LeadExtension;
using MoreEnumerable = MoreLinq.MoreEnumerable;

In the example above, Lag and Lead will be available as extension methods as well as all the regular static methods on MoreEnumerable but without any of the extension methods offered by MoreEnumerable.

Release Notes

https://github.com/morelinq/MoreLINQ/releases/tag/v3.2.0

Showing the top 10 GitHub repositories that depend on morelinq:

Repository Stars
bchavez/Bogus
:card_index: A simple and sane fake data generator for C#, F#, and VB.NET. Based on and ported from the famed faker.js.
opentk/opentk
This Open Toolkit library is a fast, low-level C# wrapper for OpenGL and OpenAL. It can be used standalone or inside a GUI on Windows, Linux, Mac, Android and iOS.
ClosedXML/ClosedXML
ClosedXML is a .NET library for reading, manipulating and writing Excel 2007+ (.xlsx, .xlsm) files. It aims to provide an intuitive and user-friendly interface to dealing with the underlying OpenXML API.
Lunat1q/Catchem-PoGo
Project is DEAD, Discord server: https://discord.me/Catchem
PoESkillTree/PoESkillTree
A Passive Skill Tree Planner for Path of Exile
loic-sharma/BaGet
A lightweight NuGet and symbol server
collinbarrett/FilterLists
:shield: The independent, comprehensive directory of filter and host lists for advertisements, trackers, malware, and annoyances.
WebVella/WebVella-ERP
Free and open-source pluggable ERP and CRM software based on ASP.NET Core 2.2, RazorPages and PostgreSQL 11. Targets Linux or Windows as host OS.
Dynatrace/superdump
A service for automated crash-dump analysis
d-haxton/HaxtonBot
Still the fastest.

Version History

Version Downloads Last updated
3.2.0 32,308 7/17/2019
3.1.1 262,601 4/5/2019
3.1.0 376,636 12/21/2018
3.0.0 705,141 6/29/2018
3.0.0-beta-2 3,237 5/17/2018
3.0.0-beta-1 7,514 4/10/2018
2.10.0 640,278 1/23/2018
2.9.0 80,173 12/22/2017
2.8.0 277,386 9/30/2017
2.7.0 104,594 8/31/2017
2.7.0-rc-1 377 8/28/2017
2.7.0-beta-1 539 8/23/2017
2.6.0 184,530 6/30/2017
2.5.0 80,641 5/31/2017
2.4.1 58,722 5/1/2017
2.4.0 1,606 4/30/2017
2.4.0-beta-02 937 4/21/2017
2.4.0-beta-01 1,608 4/13/2017
2.3.0 129,334 3/31/2017
2.2.0 86,120 2/24/2017
2.2.0-beta-1 560 2/19/2017
2.1.0 82,893 1/31/2017
2.0.0 69,179 12/23/2016
2.0.0-beta06 6,667 11/11/2016
2.0.0-beta05 6,519 9/28/2016
2.0.0-beta04 10,844 8/5/2016
2.0.0-beta03 10,125 2/18/2016
2.0.0-beta02 561 2/9/2016
2.0.0-beta01 560 2/1/2016
2.0.0-alpha01 25,863 6/27/2013
1.4.0 653,129 10/16/2015
1.3.0 22,479 10/2/2015
1.2.0 11,710 9/16/2015
1.1.1 106,597 5/19/2015
1.1.0 142,158 8/12/2014
1.0.16006 137,899 5/7/2013
1.0.15631-beta 1,326 1/31/2013
1.0.15416-beta 710 11/16/2012
1.0.11729-beta 502 11/9/2012
1.0.0 42,999 6/3/2011