Welcome to the Relinx wiki!

Relinx Logo


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

Last edited Jun 10, 2016 at 1:25 PM by Promaine, version 6