2.5.1 • Published 4 years ago

linq-es2015 v2.5.1

Weekly downloads
670
License
Apache-2.0
Repository
github
Last release
4 years ago

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

Example Projects

2.5.1

4 years ago

2.5.0

4 years ago

2.4.36

4 years ago

2.4.35

4 years ago

2.4.34

5 years ago

2.4.33

6 years ago

2.4.32

6 years ago

2.4.31

6 years ago

2.4.29

7 years ago

2.4.28

7 years ago

2.4.27

7 years ago

2.4.26

7 years ago

2.4.25

7 years ago

2.4.24

7 years ago

2.4.23

7 years ago

2.4.22

7 years ago

2.4.21

7 years ago

2.4.20

7 years ago

2.4.18

7 years ago

2.4.17

7 years ago

2.4.16

7 years ago

2.4.15

7 years ago

2.4.14

7 years ago

2.4.13

7 years ago

2.4.12

8 years ago

2.4.11

8 years ago

2.4.10

8 years ago

2.4.9

8 years ago

2.4.8

8 years ago

2.4.7

8 years ago

2.4.6

8 years ago

2.4.5

8 years ago

2.4.4

8 years ago

2.4.3

8 years ago

2.4.2

8 years ago

2.4.1

8 years ago

2.4.0

8 years ago

2.3.2

8 years ago

2.3.1

8 years ago

2.3.0

8 years ago

2.2.12

8 years ago

2.2.11

8 years ago

2.2.10

8 years ago

2.2.4

8 years ago

2.2.2

8 years ago

2.2.1

8 years ago

2.2.0

8 years ago

2.1.5

8 years ago

2.1.4

8 years ago

2.1.3

8 years ago

2.1.2

8 years ago

2.1.1

8 years ago

2.0.8

8 years ago

2.0.7

8 years ago

2.0.6

8 years ago

2.0.5

8 years ago

2.0.4

8 years ago

2.0.3

8 years ago

2.0.2

8 years ago

2.0.1

8 years ago

2.0.0

8 years ago