Marak / JSLINQ

Clean and simple port of Microsoft's LINQ to node.js (and the browser)
http://maraksquires.com/JSLINQ/
92 stars 15 forks source link

this project is mostly un-maintained. i worked on this as an experiment to learn LINQ a bit better and get to write some node code. i might pick it back up later, but there are more active / better versions if you google around a bit.

JSLINQ - Perform LINQ against JSON

A pure JS implementation of Microsoft's Language Integrated Query library

works in the browser or in node.js (CommonJS)

(note: just because microsoft is evil, doesn't mean that this one little JS library doesn't kick ass)

basic examples

assume the following JSON data:

var sampleData = [
    {
        "ID": 1,
        "FirstName": "Chris",
        "LastName": "Pearson",
        "BookIDs": [
            1001,
            1002,
            1003
        ]
    },
    {
        "ID": 2,
        "FirstName": "Kate",
        "LastName": "Johnson",
        "BookIDs": [
            2001,
            2002,
            2003
        ]
    },
    {
        "ID": 3,
        "FirstName": "Josh",
        "LastName": "Sutherland",
        "BookIDs": [
            3001,
            3002,
            3003
        ]
    },
    {
        "ID": 4,
        "FirstName": "John",
        "LastName": "Ronald",
        "BookIDs": [
            4001,
            4002,
            4003
        ]
    },
    {
        "ID": 5,
        "FirstName": "Steve",
        "LastName": "Pinkerton",
        "BookIDs": [
            1001,
            1002,
            1003
        ]
    },
    {
        "ID": 6,
        "FirstName": "Katie",
        "LastName": "Zimmerman",
        "BookIDs": [
            2001,
            2002,
            2003
        ]
    },
    {
        "ID": 7,
        "FirstName": "Dirk",
        "LastName": "Anderson",
        "BookIDs": [
            3001,
            3002,
            3003
        ]
    },
    {
        "ID": 8,
        "FirstName": "Chris",
        "LastName": "Stevenson",
        "BookIDs": [
            4001,
            4002,
            4003
        ]
    },
    {
        "ID": 9,
        "FirstName": "Bernard",
        "LastName": "Sutherland",
        "BookIDs": [
            1001,
            2002,
            3003
        ]
    },
    {
        "ID": 10,
        "FirstName": "Kate",
        "LastName": "Pinkerton",
        "BookIDs": [
            4001,
            3002,
            2003
        ]
    }
];

now that we have some JSON data to work with, we can perform LINQ statements on it.

simple Select

var sample = JSLINQ(sampleData).
  Select(function (item) {return item.FirstName;});

output: {"items":["Chris","Kate","Josh","John","Steve","Katie","Dirk","Chris","Bernard","Kate"]}

simple Select with OrderBy

 var sample = JSLINQ(sampleData).
  Select(function (item) {return item.FirstName;}).
  OrderBy(function (item) {return item;});

 output: {"items":["Bernard","Chris","Chris","Dirk","John","Josh","Kate","Kate","Katie","Steve"]}

simple Where

var sample = JSLINQ(sampleData).Where(function (item) {return item.FirstName == "Chris";});

output: [
         {"ID":1,"FirstName":"Chris","LastName":"Pearson","BookIDs":[1001,1002,1003]},
         {"ID":8,"FirstName":"Chris","LastName":"Stevenson","BookIDs":[4001,4002,4003]}
        ]

For the Full JSLINQ Demo and API implementation goto @ http://maraksquires.com/JSLINQ/

Original Project Home : Codeplex Sucks