This project is not being supported anymore. Please take a look at https://github.com/dotnetprojects/IndexedLinq that was forked from this project and is now available as a nuget package.
IP.i4o (index for objects) enhances the i4o library (https://github.com/ericksoa/i4o) from which it was forked. This library was renamed as well in order to prevent confusion if, for example, both this and the original were to appear on NuGet.
- Allows indexes to be added to collections to optimize LINQ queries since, by default, LINQ queries collection items sequentially. Specifically, this is achieved by adding either a comparison or an equality index, which have O(log n) or O(1) operation, respectively.
Standard (unoptimized) LINQ queries: **O(n)** LINQ queries with comparison index: **O(log n)** LINQ queries with equality index: **O(1)**
- Optimized inefficient index queries whereby the binary search was performed twice: first to check if the key existed and again to look up the key/value
- Removed c5 collections dependency/source code (it was used by i40 primarily for its red-black tree implementation and helper methods for selecting ranges) in favor of the .NET built-in generic
SortedList<TKey,TValue>
(the range selection functionality was implemented viaSortedList<TKey,TValue>
extension methods). - Removed Silverlight projects -- this is mainly because I'm not developing anything for Silverlight at the moment and do not want to spend time maintaining it.
- A beta should soon be available on NuGet.
- Download/fork the source and build.
GNU Lesser General Public License (LGPL), Version 3.0, 29 June 2007