Yet another .NET-like LINQ library that supports lazy evaluation (or evaluation on demand).
The Relinx library implements almost all .NET LINQ methods. Some of them are lazy and some of them are not.
Also, the library contains a couple of methods that are not standard LINQ methods.
The library uses forward-only iterators (input iterators) and can be used for single-linked lists (forward_list).
Source code contains doxygen blocks. So, some documentation can be generated using doxygen.
Important notes: The library uses the C++14 standard intensively. It was developed and successfully tested using MinGW / GCC 5.3.0, LLVM Clang 3.9.0 and MSVC++ 2015 (although, MSVC++ 2015 has some issues compiling unit tests that use complex
lambdas).
The mapping of the .NET LINQ methods to Relinx methods:
LINQ method | Relinx methods |
---|---|
Aggregate | aggregate |
All | all |
none | |
Any | any |
AsEnumerable | from |
Avarage | avarage |
Cast | cast |
Concat | concat |
Contains | contains |
Count | count |
cycle | |
DefaultIfEmpty | default_if_empty |
Distinct | distinct |
ElementAt | element_at |
ElementAtOrDefault | element_at_or_default |
Empty | from |
Except | except |
First | first |
FirstOrDefault | first_or_default |
for_each, for_each_i | |
GroupBy | group_by |
GroupJoin | group_join |
Intersect | intersect_with |
Join | join |
Last | last |
LastOrDefault | last_or_default |
LongCount | count |
Max | max |
Min | min |
OfType | of_type |
OrderBy | order_by |
OrderByDescending | order_by_descending |
Range | range |
Repeat | repeat |
Reverse | reverse |
Select | select, select_i |
SelectMany | select_many, select_many_i |
SequenceEqual | sequence_equal |
Single | single |
SingleOrDefault | single_or_default |
Skip | skip |
SkipWhile | skip_while, skip_while_i |
Sum | sum |
Take | take |
TakeWhile | take_while, take_while_i |
ThenBy | then_by |
ThenByDescending | then_by_descending |
ToArray | to_container, to_vector |
ToDictionary | to_map |
ToList | to_list |
ToLookup | to_multimap |
to_string | |
Union | union_with |
Where | where, where_i |
Zip | zip |