在GitHub上的源代码
兼容ES5!主流的浏览器都可用!
介绍
Linq就是C#上面的linq。
没有完全实现,毕竟要根据js进行本地化处理。
为了提高自由度,也不主动抛出异常。
没有实现的方法是:Single,Cast,AsEnumerable,ToList。
用ToMap方法代替ToDictionary方法。ES6的Map很好地代替了C#的Dictionary呢。
Iterator代替IEnumerator,Iterable代替IEnumerable。
例子
一时没想到有意思的例子,就简单举两个。
var uf = Iterable.Range(0, Number.MAX_VALUE);
var f1 = uf.Where(function (v) { return v % 2 === 0; });
var f2 = uf.Where(function (v) { return v % 3 === 0; });
var foo= f1.Zip(f2, function (x, y) { return x * y; }).Take(10);
求前十个能被2整除的自然数与前十个能被3整除的自然数的乘积的集合。在ES6可以这样被打印。
for(var v of foo){
console.log(v);
}
ES6以前用ForEach方法代替for...of...语法
foo.ForEach(function (v) {
console.log(v);
});
结果如下:
Iterable(['hello', 'world']).SelectMany(function (v) { return v; }).ToArray();
结果如下:
用途
可以用作处理数据流。
也可以在轻便的环境下练习linq的使用。
最后
感谢大家的阅读,欢迎指出bug及建议。