Skip to content
/ LINQ Public
forked from ENikS/LINQ

TypeScript Implementation of Language-Integrated Query (LINQ) (ECMAScript 2015)

License

Notifications You must be signed in to change notification settings

MgSam/LINQ

This branch is 37 commits behind ENikS/LINQ:master.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

e5f4b5e · Mar 26, 2018
Jul 24, 2017
Jul 17, 2016
Mar 26, 2018
Aug 21, 2017
Jun 24, 2016
Jun 30, 2016
Jun 30, 2016
Jul 17, 2016
Aug 15, 2016
Jan 17, 2018
Mar 10, 2017
Jun 6, 2015
Jun 27, 2017
Jun 20, 2017
Jul 17, 2016
Mar 18, 2018
Mar 18, 2018
Jul 24, 2017
Mar 18, 2018

Repository files navigation

Build Status Coverage Status Dependency Status Greenkeeper badge npm version Downloads License

The library is a continuous effort to implement LINQ using latest features of TypeScript and JavaScript languages (For ES5 compatible library look at linq-es5 branch). The library is implemented in TypeScript and transpiled into JavaScript. It is distributed as a native module. It utilizes latest ECMAScript 2015 language specification: Iterables ( [System.iterator] ), generators (function*), for of loops.
All relevant methods are implemented with deferred execution so no unnecessary iterations are performed. The code is backwards compatible with linq-es5 and C# implementations.

Using in Node

Install module with this command:

npm install linq-es2015 --save

Once installed it could be loaded and used like this:

import * as Enumerable from "linq-es2015"; 

var count =  Enumerable.asEnumerable( [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] )
                       .Where(a => a % 2 == 1)
                       .Count()

var iterable = Enumerable.asEnumerable(people)
                         .GroupJoin(pets,
                                    person => person, 
                                    pet => pet.Owner,
                                    (person, petCollection) => {
                                        return {
                                            Owner: person.Name,
                                            Pets: asEnumerable(petCollection)
                                                 .Select(pet=> pet.Name)
                                                 .ToArray()
                                        };
                                    });

[See Example]

Using in browser

Browserified "standalone" UMD module is located in /dist directory and could be accessed through NPM CDN service. Both linq.js and linq.min.js are available. Module is loaded with <script> element:

<script type="text/javascript" src="//unpkg.com/linq-es2015/dist/linq.min.js"></script>

Loading this script creates Enumerable global variable. You can use it to perform LINQ queries:

var count =  Enumerable.asEnumerable( [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] )
                       .Where(a => a % 2 == 1)
                       .Count()

[See Example]

Using in Angular 2

The same package could be used on a server as well as on the client. You have to install module as usual:

npm install linq-es2015 --save

Open app.components.html file and add element to hold calculated value:

<h1>{{title}}</h1>
<div>Count - {{count}}</div>

and finally import linq-es2015 in app.component.ts and do some calculations:

import { Component } from '@angular/core';
import { asEnumerable } from 'linq-es2015';

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})

export class AppComponent {
  title = 'app works!';
  count: number;

    constructor(){
      this.count = asEnumerable([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]).Where(a => a % 2 == 1)
                                                                .Count();        
    }
}

[See Example]

Documentation

About

TypeScript Implementation of Language-Integrated Query (LINQ) (ECMAScript 2015)

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • TypeScript 100.0%