linq-es2015

Complete implementation of Language-Integrated Query (LINQ) (ECMAScript 2015 Language Specification)

Downloads in past

Stats

StarsIssuesVersionUpdatedCreatedSize
linq-es2015
11502.5.14 years ago8 years agoMinified + gzip package size for linq-es2015 in KB

Readme

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: ```javascript 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: ```javascript ``` Loading this script creates ``Enumerable`` global variable. You can use it to perform LINQ queries: ```javascript 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: ```javascript
{{title}}
Count - {{count}}
``` and finally import ``linq-es2015`` in app.component.ts and do some calculations: ```javascript 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

Example Projects