IxJS: Interactive Extensions for JavaScript is now Microsoft Open Source


Ever heard about IxJS? Interactive Extensions for JavaScript is an implementation of Language Integrated Query (LINQ) to native JavaScript Objects with core set of operators as par with .NET. It use the techniques for lazy evaluation of chained functions like map, select, filter, where, etc.

There are two files involved L2O.js (Core LINQ to Objects library) and IX.js (Interactive Extensions for JavaScript). These libraries can be installed through NUGET Packages which is the easiest way to use them in our application.

NUGET packages for IXJS-L2O and IXJS-Main versioned 1.0.6 was released on August 29, 2013. All these two libraries can be installed together from the package IXJS-All.

Let me show you some of the basic features of Interactive Extensions through some examples. Here I just created a blank web app and installed IX libraries through Nuget command Install-Package IXJS-All


I added a sample blank HTML file and added the reference to both the script libraries minified version.


Now let’s try to get some illustrations from these extensions of how we can perform LINQ to Objects through JavaScript. Since I have Web Essentials installed for my Visual Studio 2013, I can get the JavaScript intellisense easily. Here what the intellisense of Ix displayed while I am trying to write the code.


Few code examples are like:

var source = Ix.Enumerable.concat(

var str = [];
source.forEach(function (item) {
document.getElementById('lblconcat').innerHTML = str.join(' , ');
source = Ix.Enumerable.catch(
    Ix.Enumerable.throw(new Error('first')),
    Ix.Enumerable.throw(new Error('second')),
document.getElementById('lblcatch').innerHTML = source.first();
//Array manipulation
source = Ix.Enumerable.fromArray([1, 2, 3]);
var str1 = [];
source.forEach(function (x) {
document.getElementById('lblArray').innerHTML = str1.join(' , ');
// Query the data
source = Ix.Enumerable.range(0, 10);
var query = source
    .map(function (x) {
        return x * x;
    .filter(function (x) {
        return x % 3 === 0;

var str2 = [];
query.forEach(function (x, idx) {
    str2.push("Value: " + x + " Index: " + idx);
document.getElementById('foreach').innerHTML = str2.join(' , ');

Try to do some more examples and see how this library works for you. There is another library called _Underscore.js which does the similar LINQ to Objects in JavaScript which I will try to show later on.

Download Source

One thought on “IxJS: Interactive Extensions for JavaScript is now Microsoft Open Source

Leave a Reply

%d bloggers like this: