Quick look at Linq.js

var longSequence = linq.Enumerable.range(1, 100000000);
var projected = longSequence.skip(5).take(10)
                .where(function(x) { return x % 2 === 0; })
                .select(function(x) { return x * x; });

// Finishes in no time
console.log(projected.first());     // 36
console.log(projected.toArray());   // [36, 64, 100, 144, 196]

// Takes some seconds...
longSequence.toList();

Handle sequences in Javascript efficiently

Linq.js is designed to help you deal with large numbers of objects. Define exactly what you need in a way that is easy to read and to write. Linq.js will make sure it does only as much work as it needs to; by optimizing every single step of the combined query to produce just what is needed for the final result, the total processing time can be kept at a minimum.

Familiar syntax from .NET LINQ

If you have experience with the established .NET LINQ system and its extension methods, using Linq.js will feel natural to you. The method signatures are designed to closely match the .NET signatures while adhering to common Javascript conventions.

Getting started

After downloading and extracting the zipped repository you will find the linq.js file in the dist folder. Add this file to your project to gain access to the global linq object that serves as your entry point for making use of the library. Make sure to use the minified version linq.min.js for production. Check the contents of the docs folder of the repository for a detailed documentation generated by jsdoc.