# SuperLinq
Name |
Status |
History |
GitHub Actions |
|
|
LINQ to Objects is missing a few desirable features.
This project enhances LINQ to Objects with extra methods, in a manner which
keeps to the spirit of LINQ.
Methods are provided to extend both IEnumerable<T>
(via SuperLinq package)
and IAsyncEnumerable<T>
(via SuperLinq.Async package).
SuperLinq
SuperLinq is available for download and installation as a
NuGet package.
The documentation for the SuperLinq methods can be found here.
SuperLinq.Async
SuperLinq.Async is available for download and installation as a
NuGet package.
The documentation for the SuperLinq.Async methods can be found here.
Operators
Sorting Data
A sorting operation orders the elements of a sequence based on one or more attributes. The first sort
criterion performs a primary sort on the elements. By specifying a second sort criterion, you can sort the elements
within each primary sort group.
### Methods
| Method Name | Description | Sync doc | Async doc |
| ----------- | --- | --- | --- |
| OrderBy | Sorts the elements of a sequence in a particular direction (ascending, descending) according to a key | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.SuperEnumerable.OrderBy.html) | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.Async.AsyncSuperEnumerable.OrderBy.html) |
| ThenBy | Performs a subsequent ordering of elements in a sequence in a particular direction (ascending, descending) according to a key | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.SuperEnumerable.ThenBy.html) | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.Async.AsyncSuperEnumerable.ThenBy.html) |
| PartialSort | Executes a partial sort of the top `N` elements of a sequence. If `N` is less than the total number of elements in the sequence, then this method will improve performance. | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.SuperEnumerable.PartialSort.html) | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.Async.AsyncSuperEnumerable.PartialSort.html) |
| PartialSortBy | Executes a partial sort of the top `N` elements of a sequence according to a key. If `N` is less than the total number of elements in the sequence, then this method will improve performance. | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.SuperEnumerable.PartialSortBy.html) | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.Async.AsyncSuperEnumerable.PartialSortBy.html) |
| DensePartialSort | Executes a partial sort of the top `N` elements of a sequence, including ties. If `N` is less than the total number of elements in the sequence, then this method will improve performance. | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.SuperEnumerable.DensePartialSort.html) | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.Async.AsyncSuperEnumerable.DensePartialSort.html) |
| DensePartialSortBy | Executes a partial sort of the top `N` elements of a sequence, including ties according to a key. If `N` is less than the total number of elements in the sequence, then this method will improve performance. | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.SuperEnumerable.DensePartialSortBy.html) | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.Async.AsyncSuperEnumerable.DensePartialSortBy.html) |
| Shuffle | Sorts the elements of a sequence in a random order. | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.SuperEnumerable.Shuffle.html) | ⏱([#20](https://github.com/viceroypenguin/SuperLinq/issues/20)) |
| RandomSubset | Sorts a given number of elements of a sequence in a random order. | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.SuperEnumerable.RandomSubset.html) | ⏱([#20](https://github.com/viceroypenguin/SuperLinq/issues/20)) |
Set Operations
Set operations in LINQ refer to query operations that produce a result set that is based on the presence or absence of
equivalent elements within the same or separate collections (or sets).
### Methods
| Method Name | Description | Sync doc | Async doc |
| ----------- | --- | --- | --- |
| DistinctBy | Removes duplicate values from a collection. | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.SuperEnumerable.DistinctBy.html) | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.Async.AsyncSuperEnumerable.DistinctBy.html) |
| Duplicates | Returns the sequence of elements that are in the source sequence more than once. | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.SuperEnumerable.Duplicates.html) | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.Async.AsyncSuperEnumerable.Duplicates.html) |
| ExceptBy | Returns the set difference, which means the elements of one collection that do not appear in a second collection. | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.SuperEnumerable.ExceptBy.html) | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.Async.AsyncSuperEnumerable.ExceptBy.html) |
Filtering Data
Filtering refers to the operation of restricting the result set to contain only those elements that satisfy a specified
condition. It is also known as selection.
### Methods
| Method Name | Description | Sync doc | Async doc |
| ----------- | --- | --- | --- |
| Choose | Filters a sequence based on a projection method that returns a tuple containing `bool` value and a new projected value. | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.SuperEnumerable.Choose.html) | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.Async.AsyncSuperEnumerable.Choose.html) |
| Where | Filters a sequence of values based on an enumeration of boolean values. | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.SuperEnumerable.Where.html) | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.Async.AsyncSuperEnumerable.Where.html) |
| WhereLead | Filters a sequence of values based on a predicate evaluated on the current value and a leading value. | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.SuperEnumerable.WhereLead.html) | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.Async.AsyncSuperEnumerable.WhereLead.html) |
| WhereLag | Filters a sequence of values based on a predicate evaluated on the current value and a lagging value. | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.SuperEnumerable.WhereLag.html) | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.Async.AsyncSuperEnumerable.WhereLag.html) |
Quantifier Operations
Quantifier operations return a boolean value that indicates whether the sequence length matches some criteria.
### Methods
| Method Name | Description | Sync doc | Async doc |
| ----------- | --- | --- | --- |
| AtLeast | Determines whether or not the number of elements in the sequence is greater than or equal to the given integer. | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.SuperEnumerable.AtLeast.html) | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.Async.AsyncSuperEnumerable.AtLeast.html) |
| AtMost | Determines whether or not the number of elements in the sequence is lesser than or equal to the given integer. | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.SuperEnumerable.AtMost.html) | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.Async.AsyncSuperEnumerable.AtMost.html) |
| CountBetween | Determines whether or not the number of elements in the sequence is between an inclusive range of minimum and maximum integers. | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.SuperEnumerable.CountBetween.html) | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.Async.AsyncSuperEnumerable.CountBetween.html) |
| Exactly | Determines whether or not the number of elements in the sequence is equals to the given integer. | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.SuperEnumerable.Exactly.html) | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.Async.AsyncSuperEnumerable.Exactly.html) |
| TrySingle | Determines the cardinality of the sequence in the set `{ 0, 1, >1 }`. | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.SuperEnumerable.TrySingle.html) | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.Async.AsyncSuperEnumerable.TrySingle.html) |
| HasDuplicates | Determines whether the sequence contains duplicates | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.SuperEnumerable.HasDuplicates.html) | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.Async.AsyncSuperEnumerable.HasDuplicates.html) |
Projection Operations
Projection refers to the operation of transforming an object into a new form that may contain related information.
### Methods
| Method Name | Description | Sync doc | Async doc |
| ----------- | --- | --- | --- |
| EquiZip | Joins the corresponding elements of up to four sequences producing a sequence of tuples containing them, asserting that all sequences have exactly the same length. | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.SuperEnumerable.EquiZip.html) | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.Async.AsyncSuperEnumerable.EquiZip.html) |
| ZipLongest | Joins the corresponding elements of up to four sequences producing a sequence of tuples containing them, using `default` values for sequences that are shorter than the longest sequence. | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.SuperEnumerable.ZipLongest.html) | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.Async.AsyncSuperEnumerable.ZipLongest.html) |
| ZipShortest | Joins the corresponding elements of up to four sequences producing a sequence of tuples containing them, which has the same length as the shortest sequence. | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.SuperEnumerable.ZipShortest.html) | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.Async.AsyncSuperEnumerable.ZipShortest.html) |
| CountDown | Provides a countdown counter for a given count of elements at the tail of the sequence. | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.SuperEnumerable.CountDown.html) | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.Async.AsyncSuperEnumerable.CountDown.html) |
| TagFirstLast | Provides `bool` values indicating for each element whether it is the first or last element of the sequence. | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.SuperEnumerable.TagFirstLast.html) | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.Async.AsyncSuperEnumerable.TagFirstLast.html) |
| Index | Provides an `int` value indicating the current index of each element of the sequence. | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.SuperEnumerable.Index.html) | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.Async.AsyncSuperEnumerable.Index.html) |
| IndexBy | Provides an `int` value indicating the current index of each element of the sequence within a group of items defined by a common attribute. | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.SuperEnumerable.IndexBy.html) | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.Async.AsyncSuperEnumerable.IndexBy.html) |
| Lag | Joins each element of the sequence with n-th previous element of the same sequence. | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.SuperEnumerable.Lag.html) | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.Async.AsyncSuperEnumerable.Lag.html) |
| Lead | Joins each element of the sequence with n-th next element of the same sequence. | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.SuperEnumerable.Lead.html) | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.Async.AsyncSuperEnumerable.Lead.html) |
| Rank | Provides an `int` value indicating the current rank of each element of the sequence. | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.SuperEnumerable.Rank.html) | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.Async.AsyncSuperEnumerable.Rank.html) |
| RankBy | Provides an `int` value indicating the current rank of each element of the sequence according to a key. | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.SuperEnumerable.RankBy.html) | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.Async.AsyncSuperEnumerable.RankBy.html) |
| DenseRank | Provides an `int` value indicating the current rank of each element of the sequence, counting ties as a single element. | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.SuperEnumerable.DenseRank.html) | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.Async.AsyncSuperEnumerable.DenseRank.html) |
| DenseRankBy | Provides an `int` value indicating the current rank of each element of the sequence according to a key, counting ties as a single element. | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.SuperEnumerable.DenseRankBy.html) | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.Async.AsyncSuperEnumerable.DenseRankBy.html) |
| Evaluate | Transforms a sequence of functions to a sequence of values returned by the functions. | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.SuperEnumerable.Evaluate.html) | N/A[^1] |
| ZipMap | Applies a function to each element in a sequence and returns a sequence of tuples containing both the original item as well as the function result. | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.SuperEnumerable.ZipMap.html) | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.Async.AsyncSuperEnumerable.ZipMap.html) |
Partitioning Data
Partitioning in LINQ refers to the operation of dividing an input sequence into one or more sections.
### Methods
| Method Name | Description | Sync doc | Async doc |
| ----------- | --- | --- | --- |
| TakeEvery | Takes every n-th element of the sequence. | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.SuperEnumerable.TakeEvery.html) | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.Async.AsyncSuperEnumerable.TakeEvery.html) |
| Take | Takes elements from a specified range of the sequence. | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.SuperEnumerable.Take.html) | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.Async.AsyncSuperEnumerable.Take.html) |
| Exclude | Excludes elements from a specified range of the sequence. | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.SuperEnumerable.Exclude.html) | ⏱([#10](https://github.com/viceroypenguin/SuperLinq/issues/10)) |
| Move | Moves elements from a specified range of the sequence to a new index in the sequence. | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.SuperEnumerable.Move.html) | ⏱([#27](https://github.com/viceroypenguin/SuperLinq/issues/27)) |
| SkipUntil | Skips elements based on a predicate function until an element satisfies the condition, skipping this element as well. | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.SuperEnumerable.SkipUntil.html) | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.Async.AsyncSuperEnumerable.SkipUntil.html) |
| TakeUntil | Takes elements based on a predicate function until an element satisfies the condition, taking this element as well. | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.SuperEnumerable.TakeUntil.html) | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.Async.AsyncSuperEnumerable.TakeUntil.html) |
| Batch | Splits the elements of a sequence into chunks of a specified maximum size. | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.SuperEnumerable.Batch.html) | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.Async.AsyncSuperEnumerable.Batch.html) |
| Buffer | Splits the elements of a sequence into chunks of a specified maximum size, where the chunks may be overlapping or have gaps. | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.SuperEnumerable.Buffer.html) | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.Async.AsyncSuperEnumerable.Buffer.html) |
| Partition | Splits the elements of a sequence based on a common attribute and known key values. | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.SuperEnumerable.Partition.html) | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.Async.AsyncSuperEnumerable.Partition.html) |
| Segment | Splits the elements of a sequence based on a condition function. | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.SuperEnumerable.Segment.html) | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.Async.AsyncSuperEnumerable.Segment.html) |
| Split | Splits the elements of a sequence based on a separator value that is not returned. | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.SuperEnumerable.Split.html) | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.Async.AsyncSuperEnumerable.Split.html) |
| Window | Returns a sequence of sequential windows of size `N` over the sequence. | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.SuperEnumerable.Window.html) | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.Async.AsyncSuperEnumerable.Window.html) |
| WindowLeft | Returns a sequence of sequential windows of up to size `N` over the sequence. | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.SuperEnumerable.WindowLeft.html) | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.Async.AsyncSuperEnumerable.WindowLeft.html) |
| WindowRight | Returns a sequence of sequential windows of up to size `N` over the sequence. | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.SuperEnumerable.WindowRight.html) | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.Async.AsyncSuperEnumerable.WindowRight.html) |
Join Operations
A join of two data sources is the association of objects in one data source with objects that share a common attribute in another data source.
### Methods
| Method Name | Description | Sync doc | Async doc |
| ----------- | --- | --- | --- |
| Cartesian | Executes a cartesian product (join without any key) of up to eight sequences. | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.SuperEnumerable.Cartesian.html) | N/A[^1] |
| FullGroupJoin | Joins two sequences based on key selector functions, returning two lists containing the values on each side that match according to the key. | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.SuperEnumerable.FullGroupJoin.html) | N/A[^1] |
| FullOuterJoin | Joins two sequences based on key selector functions, returning `default` values if either sequence does not have a matching key. | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.SuperEnumerable.FullOuterJoin.html) | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.Async.AsyncSuperEnumerable.FullOuterJoin.html) |
| InnerJoin | Joins two sequences based on key selector functions. | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.SuperEnumerable.InnerJoin.html) | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.Async.AsyncSuperEnumerable.InnerJoin.html) |
| LeftOuterJoin | Joins two sequences based on key selector functions, returning `default` values if the second sequence does not have a matching key. | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.SuperEnumerable.LeftOuterJoin.html) | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.Async.AsyncSuperEnumerable.LeftOuterJoin.html) |
| RightOuterJoin | Joins two sequences based on key selector functions, returning `default` values if the first sequence does not have a matching key. | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.SuperEnumerable.RightOuterJoin.html) | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.Async.AsyncSuperEnumerable.RightOuterJoin.html) |
Grouping Data
Grouping refers to the operation of putting data into groups so that the elements in each group share a common attribute.
### Methods
| Method Name | Description | Sync doc | Async doc |
| ----------- | --- | --- | --- |
| DistinctUntilChanged | Takes the first element of each adjacent group of elements that share a common attribute. | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.SuperEnumerable.DistinctUntilChanged.html) | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.Async.AsyncSuperEnumerable.DistinctUntilChanged.html) |
| GroupAdjacent | Groups adjacent elements that share a common attribute. | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.SuperEnumerable.GroupAdjacent.html) | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.Async.AsyncSuperEnumerable.GroupAdjacent.html) |
| RunLengthEncode | Takes the first element of each adjacent group of equivalent elements along with the number of elements in the group. | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.SuperEnumerable.RunLengthEncode.html) | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.Async.AsyncSuperEnumerable.RunLengthEncode.html) |
Generation Operations
Generation refers to creating a new sequence of values.
### Methods
| Method Name | Description | Sync doc | Async doc |
| ----------- | --- | --- | --- |
| Generate | Generates a sequence based on a seed value and subsequent executions of a generator function. | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.SuperEnumerable.Generate.html) | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.Async.AsyncSuperEnumerable.Generate.html) |
| From | Generates a sequence from the results of executing one or more provided functions. | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.SuperEnumerable.From.html) | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.Async.AsyncSuperEnumerable.From.html) |
| Return | Generates a single-element sequence containing the provided value. | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.SuperEnumerable.Return.html) | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.Async.AsyncSuperEnumerable.Return.html) |
| Sequence | Generates a sequence of numbers between a starting and ending value. | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.SuperEnumerable.Sequence.html) | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.Async.AsyncSuperEnumerable.Sequence.html) |
| Range | Generates a sequence of numbers. | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.SuperEnumerable.Range.html) | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.Async.AsyncSuperEnumerable.Range.html) |
| Random | Generates a sequence of random `int` values. | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.SuperEnumerable.Random.html) | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.Async.AsyncSuperEnumerable.Random.html) |
| RandomDouble | Generates a sequence of random `double` values. | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.SuperEnumerable.RandomDouble.html) | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.Async.AsyncSuperEnumerable.RandomDouble.html) |
| Repeat | Generates a sequence that infinitely repeats the input sequence. | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.SuperEnumerable.Repeat.html) | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.Async.AsyncSuperEnumerable.Repeat.html) |
| DoWhile | Generates a sequence that repeats the input sequence at least once, as long as a given condition is `true`. | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.SuperEnumerable.DoWhile.html) | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.Async.AsyncSuperEnumerable.DoWhile.html) |
| While | Generates a sequence that repeats the input sequence as long as a given condition is `true`. | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.SuperEnumerable.While.html) | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.Async.AsyncSuperEnumerable.While.html) |
| Retry | Generates a sequence that repeats the input sequence as long as the input sequence encounters an error. | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.SuperEnumerable.Retry.html) | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.Async.AsyncSuperEnumerable.Retry.html) |
| Throw | Generates a sequence that throws an exception upon enumeration. | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.SuperEnumerable.Throw.html) | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.Async.AsyncSuperEnumerable.Throw.html) |
| Permutations | Generates a sequence of every possible permutation of the input sequence. | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.SuperEnumerable.Permutations.html) | ⏱([#20](https://github.com/viceroypenguin/SuperLinq/issues/20)) |
| Subsets | Generates a sequence of every possible subset of a given size of the input sequence. | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.SuperEnumerable.Subsets.html) | ⏱([#20](https://github.com/viceroypenguin/SuperLinq/issues/20)) |
| BindByIndex | Generates a sequence from another sequence by selecting elements at given indices. | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.SuperEnumerable.BindByIndex.html) | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.Async.AsyncSuperEnumerable.BindByIndex.html) |
| ToArrayByIndex | Generates a sequence based on an index selector function applied to each element. | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.SuperEnumerable.ToArrayByIndex.html) | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.Async.AsyncSuperEnumerable.ToArrayByIndex.html) |
| FallbackIfEmpty | Replaces an empty sequence with a default sequence. | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.SuperEnumerable.FallbackIfEmpty.html) | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.Async.AsyncSuperEnumerable.FallbackIfEmpty.html) |
| FillBackward | Generates a sequence where missing values are replaced with the next good value. | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.SuperEnumerable.FillBackward.html) | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.Async.AsyncSuperEnumerable.FillBackward.html) |
| FillForward | Generates a sequence where missing values are replaced with the last good value. | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.SuperEnumerable.FillForward.html) | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.Async.AsyncSuperEnumerable.FillForward.html) |
| Pad | Generates a sequence with a minimum length, providing default values for missing elements. | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.SuperEnumerable.Pad.html) | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.Async.AsyncSuperEnumerable.Pad.html) |
| PadStart | Generates a sequence with a minimum length, providing default values for missing elements. | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.SuperEnumerable.PadStart.html) | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.Async.AsyncSuperEnumerable.PadStart.html) |
Selection Operations
Selection operations choose which sequence to based on a criteria evaluated at the time of enumeration.
### Methods
| Method Name | Description | Sync doc | Async doc |
| ----------- | --- | --- | --- |
| Amb | Enumerates the first sequence to return the first value. | N/A[^2] | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.Async.AsyncSuperEnumerable.Amb.html) |
| Case | Enumerates a sequence chosen by a function executed at the time of enumeration. | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.SuperEnumerable.Case.html) | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.Async.AsyncSuperEnumerable.Case.html) |
| If | Enumerates a sequence chosen by a condition function executed at the time of enumeration. | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.SuperEnumerable.If.html) | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.Async.AsyncSuperEnumerable.If.html) |
| Defer | Enumerates a sequence returned by a function executed at the time of enumeration. | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.SuperEnumerable.Defer.html) | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.Async.AsyncSuperEnumerable.Defer.html) |
| Using | Creates a disposable resource at the time of execution and enumerates a sequence based on the resource. | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.SuperEnumerable.Using.html) | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.Async.AsyncSuperEnumerable.Using.html) |
Equality Operations
Equality operations return a boolean value that indicates whether two sequences match according to some criteria.
### Methods
| Method Name | Description | Sync doc | Async doc |
| ----------- | --- | --- | --- |
| CollectionEqual | Determines whether two sequences contain the same elements in any order. | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.SuperEnumerable.CollectionEqual.html) | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.Async.AsyncSuperEnumerable.CollectionEqal.html) |
| CompareCount | Determines whether two sequences have the same length. | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.SuperEnumerable.CompareCount.html) | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.Async.AsyncSuperEnumerable.CompareCount.htl) |
| StartsWith | Determines whether a sequence contains another sequence at the start. | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.SuperEnumerable.StartsWith.html) | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.Async.AsyncSuperEnumerable.StartsWith.html) |
| EndsWith | Determines whether a sequence contains another sequence at the end. | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.SuperEnumerable.EndsWith.html) | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.Async.AsyncSuperEnumerable.EndsWith.html) |
Element Operations
Element operations return or find the index of a single, specific element from a sequence.
### Methods
| Method Name | Description | Sync doc | Async doc |
| ----------- | --- | --- | --- |
| ElementAt | Returns the element at a specified index in a collection. | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.SuperEnumerable.ElementAt.html) | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.Async.AsyncSuperEnumerable.ElementAt.html) |
| ElementAtOrDefault | Returns the element at a specified index in a collection or a default value if the index is out of range. | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.SuperEnumerable.ElementAtOrDefault.html) | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.Async.AsyncSuperEnumerable.ElementAtOrDefault.html) |
| FindIndex | Returns the index of the first element that satisfies a given criteria. | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.SuperEnumerable.FindIndex.html) | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.Async.AsyncSuperEnumerable.FindIndex.html) |
| FindLastIndex | Returns the index of the last element that satisfies a given criteria. | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.SuperEnumerable.FindLastIndex.html) | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.Async.AsyncSuperEnumerable.FindLastIndex.html) |
| IndexOf | Returns the first index of the element. | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.SuperEnumerable.IndexOf.html) | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.Async.AsyncSuperEnumerable.IndexOf.html) |
| LastIndexOf | Returns the last index of the element. | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.SuperEnumerable.LastIndexOf.html) | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.Async.AsyncSuperEnumerable.LastIndexOf.html) |
Converting Data Types
Element operations return or find a single, specific element from a sequence.
### Methods
| Method Name | Description | Sync doc | Async doc |
| ----------- | --- | --- | --- |
| CopyTo | Copies the elements from a sequence into a provided list-like structure. | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.SuperEnumerable.CopyTo.html) | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.Async.AsyncSuperEnumerable.CopyTo.html) |
| ToDataTable | Converts a sequence of objects into a `DataTable` object. | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.SuperEnumerable.ToDataTable.html) | N/A[^3] |
| ToDelimitedString | Converts a sequence of elements to a delimited string containing the `string` form of each element. | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.SuperEnumerable.ToDelimitedString.html) | N/A[^1] |
| ToDictionary | Converts a sequence of `KeyValuePair` or `(key, value)` tuples into a `Dictionary<,>` | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.SuperEnumerable.ToDictionary.html) | N/A[^1] |
| ToLookup | Converts a sequence of `KeyValuePair` or `(key, value)` tuples into a `Lookup<,>` | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.SuperEnumerable.ToLookup.html) | N/A[^1] |
| Transpose | Transposes a jagged two-dimensional array of elements, such that, for example, each row of the returned 2d array contains the first element of each inner array of the input. | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.SuperEnumerable.Transpose.html) | N/A[^1] |
Concatenation Operations
Concatenation refers to the operation of appending one sequence to another.
### Methods
| Method Name | Description | Sync doc | Async doc |
| ----------- | --- | --- | --- |
| ConcurrentMerge | Merges the elements of two or more asynchronous sequences into a single sequence. | N/A[^2] | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.Async.AsyncSuperEnumerable.ConcurrentMerge.html) |
| Flatten | Flattens a sequence containing arbitrarily-nested sequences into a single sequence. | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.SuperEnumerable.Flatten.html) | N/A[^4] |
| Insert | Inserts the elements of a sequence into another sequence at a specified index. | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.SuperEnumerable.Insert.html) | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.Async.AsyncSuperEnumerable.Insert.html) |
| Interleave | Interleaves the elements of two or more sequences into a single sequence. | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.SuperEnumerable.Interleave.html) | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.Async.AsyncSuperEnumerable.Interleave.html) |
| Replace | Replaces a range of elements in a sequence with the elements from another sequence. | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.SuperEnumerable.Replace.html) | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.Async.AsyncSuperEnumerable.Replace.html) |
| Catch | Concatenates one or more sequences until one is completely enumerated without error. | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.SuperEnumerable.Catch.html) | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.Async.AsyncSuperEnumerable.Catch.html) |
| OnErrorResumeNext | Concatenates one or more sequences regardless of if an error occurs in any of them. | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.SuperEnumerable.OnErrorResumeNext.html) | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.Async.AsyncSuperEnumerable.OnErrorResumeNext.html) |
| SortedMerge | Merges already-sorted sequences into a new correctly-sorted sequence. | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.SuperEnumerable.SortedMerge.html) | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.Async.AsyncSuperEnumerable.SortedMerge.html) |
| SortedMergeBy | Merges already-sorted sequences into a new correctly-sorted sequence according to a key value. | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.SuperEnumerable.SortedMergeBy.html) | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.Async.AsyncSuperEnumerable.SortedMergeBy.html) |
Aggregation Operations
An aggregation operation computes a single value from a collection of values.
### Methods
| Method Name | Description | Sync doc | Async doc |
| ----------- | --- | --- | --- |
| Aggregate | Performs two or more custom aggregation operation on the values of a sequence. | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.SuperEnumerable.Aggregate.html) | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.Async.AsyncSuperEnumerable.Aggregate.html) |
| AggregateBy | Groups elements that share a common attribute and returns a sequence of attributes along with the accumlated value for each group. | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.SuperEnumerable.AggregateBy.html) | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.Async.AsyncSuperEnumerable.AggregateBy.html) |
| AggregateRight | Performs a custom aggregation on a sequence, starting from the end. | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.SuperEnumerable.AggregateRight.html) | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.Async.AsyncSuperEnumerable.AggregateRight.html) |
| Scan | Performs a custom aggregation on a sequence, returning the intermediate aggregate value for each element in the sequence. | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.SuperEnumerable.Scan.html) | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.Async.AsyncSuperEnumerable.Scan.html) |
| PreScan | Performs a custom aggregation on a sequence, returning the pre-intermediate aggregate value for each element in the sequence. | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.SuperEnumerable.PreScan.html) | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.Async.AsyncSuperEnumerable.PreScan.html) |
| ScanBy | Performs a custom aggregation on each group of elements that share a common attribute, returning the intermediate aggregate value for each element in the sequence. | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.SuperEnumerable.ScanBy.html) | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.Async.AsyncSuperEnumerable.ScanBy.html) |
| ScanRight | Performs a custom aggregation on a sequence, returning the intermediate aggregate value for each element in the sequence, starting from the end of the sequence. | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.SuperEnumerable.ScanRight.html) | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.Async.AsyncSuperEnumerable.ScanRight.html) |
| CountBy | Groups elements that share a common attribute and returns a sequence of attributes along with the number of elements in each group. | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.SuperEnumerable.CountBy.html) | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.Async.AsyncSuperEnumerable.CountBy.html) |
| Fold | Collects the elements of an up to 16 element sequence and projects them into a single value. | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.SuperEnumerable.Fold.html) | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.Async.AsyncSuperEnumerable.Fold.html) |
| MaxItems | Determines the list of maximum values in a collection. | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.SuperEnumerable.MaxItems.html) | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.Async.AsyncSuperEnumerable.MaxItems.html) |
| MaxItemsBy | Determines the list of maximum values in a collection. | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.SuperEnumerable.MaxItemsBy.html) | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.Async.AsyncSuperEnumerable.MaxItemsBy.html) |
| MinItems | Determines the list of minimum values in a collection. | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.SuperEnumerable.MinItems.html) | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.Async.AsyncSuperEnumerable.MinItems.html) |
| MinItemsBy | Determines the list of minimum values in a collection. | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.SuperEnumerable.MinItemsBy.html) | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.Async.AsyncSuperEnumerable.MinItemsBy.html) |
Buffering Operations
Buffering operations allow storing and sharing data from a sequence to be used in a source-friendly wawy.
### Methods
| Method Name | Description | Sync doc | Async doc |
| ----------- | --- | --- | --- |
| Memoize | Lazily cache the elements of a sequence to be used in multiple re-iterations. | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.SuperEnumerable.Memoize.html) | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.Async.AsyncSuperEnumerable.Memoize.html) |
| Publish | Share a sequence among multiple consumers, such that each consumer can receive every element returned by the source since the consumer began enumerating. | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.SuperEnumerable.Publish.html) | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.Async.AsyncSuperEnumerable.Publish.html) |
| Share | Share a sequence among multiple consumers, such that each element returned by the source is only obtained by a single consumer. | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.SuperEnumerable.Share.html) | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.Async.AsyncSuperEnumerable.Share.html) |
Sequence Operations
Sequence operations perform some operation on a sequence as a whole.
### Methods
| Method Name | Description | Sync doc | Async doc |
| ----------- | --- | --- | --- |
| Consume | Immediately consumes and discards a sequence, allowing a lazy sequence that has side-effects to be completed. | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.SuperEnumerable.Consume.html) | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.Async.AsyncSuperEnumerable.Consume.html) |
| ForEach | Immediately executes an action on every element in a sequence. | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.SuperEnumerable.ForEach.html) | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.Async.AsyncSuperEnumerable.ForEach.html) |
| Do | Performs an action on each element in a sequence as it is enumerated. | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.SuperEnumerable.Do.html) | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.Async.AsyncSuperEnumerable.Do.html) |
| Timeout | Throws an exception if the async processing of an element takes longer than a specified timeout. | N/A[^2] | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.Async.AsyncSuperEnumerable.Timeout.html) |
| AssertCount | Evalutes the length of a sequence as it is enumerated and validates that the length is the same as expected. | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.SuperEnumerable.AssertCount.html) | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.Async.AsyncSuperEnumerable.AssertCount.html) |
| Finally | Executes an action when a sequence finishes enumerating, regardless of whether or not the sequence completed successfully. | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.SuperEnumerable.Finally.html) | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.Async.AsyncSuperEnumerable.Finally.html) |
Tree Operations
Tree operations allow processing tree-like data structures in a data-agnostic form.
### Methods
| Method Name | Description | Sync doc | Async doc |
| ----------- | --- | --- | --- |
| TraverseBreadthFirst | Returns every node in a tree-like virtual structure expressed by the input methods in a breadth-first manner. | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.SuperEnumerable.TraverseBreadthFirst.html) | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.Async.AsyncSuperEnumerable.TraverseBreadthFirst.html) |
| TraverseDepthFirst | Returns every node in a tree-like virtual structure expressed by the input methods in a depth-first manner. | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.SuperEnumerable.TraverseDepthFirst.html) | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.Async.AsyncSuperEnumerable.TraverseDepthFirst.html) |
| GetShortestPath | Determine the shortest path through a graph-like virtual structure using Dijkstra's algorithm or A*. | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.SuperEnumerable.GetShortestPath.html) | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.Async.AsyncSuperEnumerable.GetShortestPath.html) |
| GetShortestPathCost | Determine the cost of shortest path through a graph-like virtual structure using Dijkstra's algorithm or A*. | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.SuperEnumerable.GetShortestPathCost.html) | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.Async.AsyncSuperEnumerable.GetShortestPathCost.html) |
| GetShortestPaths | Determine the shortest cost to every node in a graph-like virtual structure using Dijkstra's algorithm. | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.SuperEnumerable.GetShortestPaths.html) | [link](https://viceroypenguin.github.io/SuperLinq/api/SuperLinq.Async.AsyncSuperEnumerable.GetShortestPaths.html) |
Footnotes:
[^1]: Not yet implemented; open a ticket if operator is desired
[^2]: Async operator without a sync equivalent
[^3]: DataTable
is an no-longer relevant data structure, so this method is only kept for posterity and will not be migrated to a datatable.
[^4]: Will not be implemented, due to complex nature of flattening async sequences into a single sequence