morelinq 3.1.1

This project enhances LINQ to Objects with the following methods: Acquire, 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

There is a newer version of this package available.
See the version list below for details.
Install-Package morelinq -Version 3.1.1
dotnet add package morelinq --version 3.1.1
<PackageReference Include="morelinq" Version="3.1.1" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add morelinq --version 3.1.1
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.1.1

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.
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.
Dynatrace/superdump
A service for automated crash-dump analysis
d-haxton/HaxtonBot
Still the fastest.
brandondahler/Data.HashFunction
C# library to create a common interface to non-cryptographic hash functions.
UweKeim/ZetaResourceEditor
Free multilingual, parallel .NET resource file editing

Version History

Version Downloads Last updated
3.2.0 2,200 7/17/2019
3.1.1 201,423 4/5/2019
3.1.0 346,044 12/21/2018
3.0.0 672,711 6/29/2018
3.0.0-beta-2 3,199 5/17/2018
3.0.0-beta-1 7,156 4/10/2018
2.10.0 617,263 1/23/2018
2.9.0 77,912 12/22/2017
2.8.0 269,248 9/30/2017
2.7.0 102,555 8/31/2017
2.7.0-rc-1 360 8/28/2017
2.7.0-beta-1 523 8/23/2017
2.6.0 178,440 6/30/2017
2.5.0 79,504 5/31/2017
2.4.1 57,237 5/1/2017
2.4.0 1,572 4/30/2017
2.4.0-beta-02 909 4/21/2017
2.4.0-beta-01 1,600 4/13/2017
2.3.0 121,866 3/31/2017
2.2.0 83,016 2/24/2017
2.2.0-beta-1 540 2/19/2017
2.1.0 81,006 1/31/2017
2.0.0 67,087 12/23/2016
2.0.0-beta06 6,520 11/11/2016
2.0.0-beta05 5,911 9/28/2016
2.0.0-beta04 10,108 8/5/2016
2.0.0-beta03 10,050 2/18/2016
2.0.0-beta02 548 2/9/2016
2.0.0-beta01 544 2/1/2016
2.0.0-alpha01 25,395 6/27/2013
1.4.0 634,347 10/16/2015
1.3.0 22,197 10/2/2015
1.2.0 11,410 9/16/2015
1.1.1 103,844 5/19/2015
1.1.0 140,086 8/12/2014
1.0.16006 135,907 5/7/2013
1.0.15631-beta 1,309 1/31/2013
1.0.15416-beta 682 11/16/2012
1.0.11729-beta 476 11/9/2012
1.0.0 42,832 6/3/2011