| 
                         0:0  | 
                
| method name | return type | arguments | example (click code) | 
| Choice | Enumerable | params T obj | 
                        Enumerable.Choice("a","b","c","d").Take(10)
                        Enumerable.Choice(["a","b","c","d"]).Take(10)  | 
                
| Cycle | Enumerable | params T obj | 
                        Enumerable.Cycle(1,"foo",true).Take(10) Enumerable.Cycle([1,"foo",true]).Take(10)  | 
                
| Empty | Enumerable | () | 
                        Enumerable.Empty()  | 
                
| From | Enumerable | Array obj | 
                        var arr = [1,124,"aaa",function(){},false];
Enumerable.From(arr)
                     | 
                
| Object obj | 
                        var obj = {a:3,b:"3",z:function(){},d:true};
Enumerable.From(obj).Select("$.Key + ':' + $.Value")
                     | 
                ||
| NodeList obj | 
                        var node = document.getElementsByTagName("h2");
Enumerable.From(node).Select("$.innerHTML")
                     | 
                ||
| Number obj | 
                        Enumerable.From(5)  | 
                ||
| String obj | 
                        Enumerable.From("foobar")
                     | 
                ||
| IEnumerable(WSH) obj | 
                        // using with Windows Script Host
// var fso = WScript.CreateObject("Scripting.FileSystemObject");
// var files = fso.GetFolder("C:\\").Files;
// Enumerable.From(files).Select("$.Name").ForEach("WScript.Echo($)");
                     | 
                ||
| Return | Enumerable | T element | 
                        Enumerable.Return("foobar")
                     | 
                
| Matches | Enumerable | string input, RegExp pattern | 
                        Enumerable.Matches("xbcyBCzbc", /(.)bc/i)
.Select("'index='+$.index+' all='+$[0]+' capture='+$[1]")
                     | 
                
| string input, string pattern | 
                        Enumerable.Matches("xbcyBCzbc", "(.)bc")
.Select("'index='+$.index+' all='+$[0]+' capture='+$[1]")
                     | 
                ||
| string input, string pattern, string flags | 
                        Enumerable.Matches("xbcyBCzbc", "(.)bc", "i")
.Select("'index='+$.index+' all='+$[0]+' capture='+$[1]")
                     | 
                ||
| Range | Enumerable | int start, int count | 
                        Enumerable.Range(10,5)  | 
                
| int start, int count, int step | 
                        Enumerable.Range(10,5,3)  | 
                ||
| RangeDown | Enumerable | int start, int count | 
                        Enumerable.RangeDown(10,5)  | 
                
| int start, int count, int step | 
                        Enumerable.RangeDown(10,5,3)  | 
                ||
| RangeTo | Enumerable | int start, int to | 
                        Enumerable.RangeTo(10,18) Enumerable.RangeTo(3,-5)  | 
                
| int start, int to, int step | 
                        Enumerable.RangeTo(1,9,3) Enumerable.RangeTo(1,-9,3)  | 
                ||
| Repeat | Enumerable | T obj | 
                        Enumerable.Repeat(3).Take(5)  | 
                
| T obj, int count | 
                        Enumerable.Repeat("foo",10)
                     | 
                ||
| RepeatWithFinalize | Enumerable | T initializer(), void finalizer(T) | 
                        // example for WScript(Text EnumerateLines and Finally Close)
// var fso = WScript.CreateObject("Scripting.FileSystemObject");
// Enumerable.RepeatWithFinalize(
//         function () { return fso.OpenTextFile("C:\\file.txt") },
//         function (ts) { ts.Close() })
//     .TakeWhile(function (ts) { return !ts.AtEndOfStream })
//     .Select(function (ts) { return ts.ReadLine() });
                     | 
                
| Generate | Enumerable | T func() | 
                        Enumerable.Generate("Math.random()").Take(5)
                     | 
                
| T func(), int count | 
                        Enumerable.Generate("Math.random()", 5)
                     | 
                ||
| ToInfinity | Enumerable | () | 
                        Enumerable.ToInfinity().Take(5)  | 
                
| int start | 
                        Enumerable.ToInfinity(1000).Take(5)  | 
                ||
| int start, int step | 
                        Enumerable.ToInfinity(1000,5).Take(5)  | 
                ||
| ToNegativeInfinity | Enumerable | () | 
                        Enumerable.ToNegativeInfinity().Take(5)  | 
                
| int start | 
                        Enumerable.ToNegativeInfinity(1000).Take(5)  | 
                ||
| int start, int step | 
                        Enumerable.ToNegativeInfinity(1000,5).Take(5)  | 
                ||
| Unfold | Enumerable | T seed, T func(T) | 
                        Enumerable.Unfold(5, "$+3").Take(10)  | 
                
| method name | return type | arguments | example (click code) | 
| CascadeBreadthFirst | Enumerable | T[] func(T) | 
                        Enumerable.Return(1).CascadeBreadthFirst("$+$").Take(5)
                     | 
                
| T[] func(T), T resultSelector(T) | 
                        Enumerable.Return(1).CascadeBreadthFirst("$+$","$*$").Take(5)
                     | 
                ||
| T[] func(T), T resultSelector(T, int) | 
                        Enumerable.Return(document.body)
.CascadeBreadthFirst("$.childNodes", "v,n=>{value:v,nestLevel:n}")
.Where("$.nestLevel<3 && $.value.nodeType == 1")
.Select("$.nestLevel + ':' + $.value.tagName")
                     | 
                ||
| CascadeDepthFirst | Enumerable | T[] func(T) | 
                        Enumerable.Return(1).CascadeDepthFirst("$+$").Take(5)
                     | 
                
| T[] func(T), T resultSelector(T) | 
                        Enumerable.Return(1).CascadeDepthFirst("$+$","$*$").Take(5)
                     | 
                ||
| T[] func(T), T resultSelector(T, int) | 
                        Enumerable.Return(document.body)
.CascadeDepthFirst("$.childNodes", "v,n=>{value:v,nestLevel:n}")
.Where("$.nestLevel<3 && $.value.nodeType == 1")
.Select("$.nestLevel + ':' + $.value.tagName")
                     | 
                ||
| Flatten | Enumerable | () | 
                        var array = [1,[234,2,[62,3]],[234,5],3]; Enumerable.From(array).Flatten()  | 
                
| Pairwise | Enumerable | T selector(T, T) | 
                        Enumerable.Range(1,10)
.Pairwise("prev,next=>prev + ':' + next")
                     | 
                
| Scan | Enumerable | T func(T, T) | 
                        Enumerable.Range(1,10).Scan("a,b=>a+b")
                     | 
                
| T seed, T func(T, T) | 
                        Enumerable.Range(1,10).Scan(100,"a,b=>a+b")  | 
                ||
| T seed, T func(T, T), T resultSelector(T) | 
                        Enumerable.Range(1,10).Scan(100,"a,b=>a+b","$*10")  | 
                ||
| Select | Enumerable | T selector(T) | 
                        Enumerable.Range(1,10).Select("$*10")
                     | 
                
| T selector(T, int) | 
                        Enumerable.RangeDown(10,10).Select("value,index=>index + ':' + value")
                     | 
                ||
| SelectMany | Enumerable | T[] collectionSelector(T) | 
                        Enumerable.Range(1,3).SelectMany("Enumerable.Repeat($,3)")
                     | 
                
| T[] collectionSelector(T, int) | 
                        Enumerable.Range(5,5)
.SelectMany("value,index=>Enumerable.Repeat('str'+value,index+1)")
                     | 
                ||
| T[] collectionSelector(T), resultSelector(T, T) | 
                        Enumerable.Range(1,3)
.SelectMany("Enumerable.Repeat($,3)","first,middle=>first + ':' + middle*10")
                     | 
                ||
| T[] collectionSelector(T, int), resultSelector(T, T) | 
                        Enumerable.Range(5,5)
.SelectMany("v,i=>Enumerable.Repeat('str'+v,i+1)","f,m=>f + ':' + m")
                     | 
                ||
| Where | Enumerable | bool predicate(T) | 
                        Enumerable.Range(1,10).Where("$%2==0")
                     | 
                
| bool predicate(T, int) | 
                        Enumerable.Range(1,10).Where("value,index=>value*index>10")
                     | 
                ||
| OfType | Enumerable | Class type | 
                        Enumerable.From([1,"a",2,"b","c",3]).OfType(Number) Enumerable.From([1,"a",2,"b","c",3]).OfType(String) function ClassA(v){this.v = v}
Enumerable.From([new ClassA("a"),1,2,new ClassA("b")])
    .OfType(ClassA).Select("$.v")
                     | 
                
| Zip | Enumerable | T[] second,T selector(T, T) | 
                        Enumerable.RangeDown(10,10) .Zip(Enumerable.Range(1,10),"outer,inner=>outer + ':' + inner")  | 
                
| T[] second,T selector(T, T, int) | 
                        Enumerable.RangeDown(10,10) .Zip(Enumerable.Range(1,10),"outer,inner,index=>index + ':' + outer*inner")  | 
                
| method name | return type | arguments | example (click code) | 
| Join | Enumerable | T[] inner, T outerKeySelector(T), T innerKeySelector(T), T resultSelector(T, T) | 
                        var array1 = [13,413,5,135,61,631,13,61,3]; var array2 = [13,134,53,6,3,7,13,7,7,135,61,3,13]; Enumerable.From(array1) .Join(array2,"","","outer,inner=>outer + ':' + inner")  | 
                
| T[] inner, T outerKeySelector(T), T innerKeySelector(T), T resultSelector(T, T), T compareSelector(T) | 
                        var array1 = [10,405,50,135]; var array2 = [1,4,7,8]; Enumerable.From(array1) .Join(array2,"","","outer,inner=>outer + ':' + inner","$%2==0")  | 
                ||
| GroupJoin | Enumerable | T[] inner, T outerKeySelector(T), T innerKeySelector(T), T resultSelector(T, Enumerable) | 
                        var array1 = [13,413,5,135,61,631,13,61,3];
var array2 = [13,134,53,6,3,7,13,7,7,135,61,3,13];
Enumerable.From(array1)
.GroupJoin(array2,"","","outer,lookup=>outer + ':' + lookup.ToString('-')")
                     | 
                
| T[] inner, T outerKeySelector(T), T innerKeySelector(T), T resultSelector(T, Enumerable), T compareSelector(T) | 
                        var array1 = [10,405,50,135];
var array2 = [1,4,7,8];
Enumerable.From(array1)
.GroupJoin(array2,"","","outer,lookup=>outer + ':' + lookup.ToString('-')","$%2==0")
                     | 
                
| method name | return type | arguments | example (click code) | 
| All | Boolean | bool predicate(T) | 
                        Enumerable.Range(1,10).All("$<5")
                        Enumerable.Range(1,10).All("$<15")
                     | 
                
| Any | Boolean | () | 
                        Enumerable.Range(1,0).Any() Enumerable.Range(1,10).Any()  | 
                
| bool predicate(T) | 
                        Enumerable.Range(1,10).Any("$==5")
                        Enumerable.Range(1,10).Any("$==15")
                     | 
                ||
| Concat | Enumerable | T[] second | 
                        Enumerable.Range(1,5).Concat(Enumerable.Repeat("foo",5))
                     | 
                
| Insert | Enumerable | int index, T[] second | 
                        Enumerable.Range(1,5).Insert(3,Enumerable.Repeat("foo",5))
                     | 
                
| Alternate | Enumerable | T value | 
                        Enumerable.Range(1,5).Alternate(-1)  | 
                
| Contains | Boolean | T value | 
                        Enumerable.Range(1,5).Contains(3) Enumerable.Range(1,5).Contains(10)  | 
                
| T value, T compareSelector(T) | 
                        Enumerable.Range(1,5).Select("{test:$}").Contains(3)
                        Enumerable.Range(1,5).Select("{test:$}").Contains(3,"$.test")
                     | 
                ||
| DefaultIfEmpty | Enumerable | T defaultValue | 
                        Enumerable.Range(1,5).DefaultIfEmpty("default")
                        Enumerable.Range(1,0).DefaultIfEmpty("default")
                     | 
                
| Distinct | Enumerable | () | 
                        var array = [1,412,5,3,5,412,7]; Enumerable.From(array).Distinct()  | 
                
| T compareSelector(T) | 
                        var seq = Enumerable.Range(1,10).Select("{test:$%3}");
seq.Distinct("$.test").Select("$.test")
                     | 
                ||
| Except | Enumerable | T[] second | 
                        var array1 = [1,412,5,3,5,412,7]; var array2 = [20,12,5,5,7,310]; Enumerable.From(array1).Except(array2)  | 
                
| T[] second, T compareSelector(T) | 
                        var seq1 = Enumerable.Range(1,10).Select("{test:$%5}");
var seq2 = Enumerable.Range(1,10).Select("{test:$%2}");
seq1.Except(seq2,"$.test").Select("$.test")
                     | 
                ||
| Intersect | Enumerable | T[] second | 
                        var array1 = [1,412,5,3,5,412,7]; var array2 = [20,12,5,5,7,310]; Enumerable.From(array1).Intersect(array2)  | 
                
| T[] second, T compareSelector(T) | 
                        var seq1 = Enumerable.Range(1,10).Select("{test:$%5}");
var seq2 = Enumerable.Range(1,10).Select("{test:$%2}");
seq1.Intersect(seq2,"$.test").Select("$.test")
                     | 
                ||
| SequenceEqual | Boolean | T[] second | 
                        Enumerable.Range(1,5).SequenceEqual(Enumerable.Range(1,5)) Enumerable.Range(1,5).SequenceEqual(Enumerable.Range(1,6))  | 
                
| T[] second, T compareSelector(T) | 
                        Enumerable.Range(1,10).Select("{test:$%5}")
.SequenceEqual(Enumerable.Range(1,10).Select("{test:$%5}"),"$.test")
                     | 
                ||
| Union | Enumerable | T[] second | 
                        var array1 = [1,412,5,3,5,412,7]; var array2 = [20,12,5,5,7,310]; Enumerable.From(array1).Union(array2)  | 
                
| T[] second, T compareSelector(T) | 
                        var seq1 = Enumerable.Range(1,5).Select("{test:$}");
var seq2 = Enumerable.Range(3,7).Select("{test:$}");
seq1.Union(seq2,"$.test").Select("$.test")
                     | 
                
| method name | return type | arguments | example (click code) | 
| OrderBy | OrderedEnumerable | () | 
                        var array = [1,51,61,75,8,35,43]; Enumerable.From(array).OrderBy()  | 
                
| T keySelector(T) | 
                        var array = [{a:"a"},{a:"z"},{a:"k"},{a:"l"},{a:"m"},{a:"c"}];
Enumerable.From(array).OrderBy("$.a").Select("$.a")
                     | 
                ||
| OrderByDescending | OrderedEnumerable | () | 
                        var array = [1,51,61,75,8,35,43]; Enumerable.From(array).OrderByDescending()  | 
                
| T keySelector(T) | 
                        var array = [{a:"a"},{a:"z"},{a:"k"},{a:"l"},{a:"m"},{a:"c"}];
Enumerable.From(array).OrderByDescending("$.a").Select("$.a")
                     | 
                ||
| ThenBy | OrderedEnumerable | T keySelector(T) | 
                        var list = [
           { a: 2, b: 4, c: 1 },
           { a: 2, b: 3, c: 7 },
           { a: 2, b: 3, c: 3 },
           { a: 4, b: 7, c: 5 },
           { a: 7, b: 3, c: 2 },
           { a: 4, b: 1, c: 5 }];
Enumerable.From(list).OrderBy("$.a").ThenBy("$.c").ThenBy("$.b")
.Select("$.a + ':' + $.b + ':' + $.c")
                     | 
                
| ThenByDescending | OrderedEnumerable | T keySelector(T) | 
                        var list = [
           { a: 2, b: 4, c: 1 },
           { a: 2, b: 3, c: 7 },
           { a: 2, b: 3, c: 3 },
           { a: 4, b: 7, c: 5 },
           { a: 7, b: 3, c: 2 },
           { a: 4, b: 1, c: 5 }];
Enumerable.From(list).OrderBy("$.a").ThenByDescending("$.c").ThenByDescending("$.b")
.Select("$.a + ':' + $.b + ':' + $.c")
                     | 
                
| Reverse | Enumerable | () | 
                        Enumerable.Range(1,10).Reverse()  | 
                
| Shuffle | Enumerable | () | 
                        Enumerable.Range(1,10).Shuffle()  | 
                
| method name | return type | arguments | example (click code) | 
| GroupBy | Enumerable<Grouping> | T keySelector(T) | 
                        Enumerable.Range(1,5).GroupBy("$%2==0")
.Select("$.Key() + ':' + $.ToString('-')")
                     | 
                
| T keySelector(T), T elementSelector(T) | 
                        Enumerable.Range(1,5).GroupBy("$%2==0","$*10")
.Select("$.Key() + ':' + $.ToString('-')")
                     | 
                ||
| Enumerable | T keySelector(T), T elementSelector(T), T resultSelector(T, Enumerable) | 
                        Enumerable.Range(1,5)
.GroupBy("$%2==0","","key,e=>key+':'+e.ToString('-')")
                     | 
                |
| TK keySelector(T), TE elementSelector(T), TR resultSelector(T, Enumerable),TC compareSelector(TK) | 
                        Enumerable.From([{d:new Date(2000,1,1),i:0},{d:new Date(2000,1,1),i:1}])
.GroupBy("$.d","","key,e=>key+':'+e.Select('$.i').ToArray()","$.toString()")
                     | 
                ||
| PartitionBy | Enumerable<Grouping> | T keySelector(T) | 
                        Enumerable.From([1,2,2,3,3,2,1,1]).PartitionBy("i=>i")
.Select("$.Key() + ':' + $.ToString('-')")
                     | 
                
| T keySelector(T), T elementSelector(T) | 
                        Enumerable.From([1,2,2,3,3,2,1,1]).PartitionBy("i=>i","i=>i*100")
.Select("$.Key() + ':' + $.ToString('-')")
                     | 
                ||
| Enumerable | T keySelector(T), T elementSelector(T), T resultSelector(T, Enumerable) | 
                        Enumerable.From([1,2,2,3,3,2,1,1])
.PartitionBy("i=>i","i=>i","key,e=>key+':'+e.ToString('-')")
                     | 
                |
| TK keySelector(T), TE elementSelector(T), TR resultSelector(T, Enumerable), TC compareSelector(TK) | 
                        Enumerable.From([{d:new Date(2000,1,1),i:0},{d:new Date(2000,1,1),i:1}])
.PartitionBy("$.d","","key,e=>key+':'+e.Select('$.i').ToArray()","$.toString()")
                     | 
                ||
| BufferWithCount | Enumerable<Array> | int count | 
                        Enumerable.Range(1,10).BufferWithCount(4)  | 
                
| method name | return type | arguments | example (click code) | 
| Aggregate | T | T func(T, T) | 
                        Enumerable.Range(1,5).Aggregate("a,b=>a*b")
                     | 
                
| T seed, T func(T, T) | 
                        Enumerable.Range(1,10).Aggregate(100,"a,b=>a+b")  | 
                ||
| T seed, T func(T, T), T resultSelector(T) | 
                        Enumerable.Range(1,10).Aggregate(100,"a,b=>a+b","$*10")  | 
                ||
| Average | Number | () | 
                        Enumerable.Range(1,10).Average()  | 
                
| Number selector(T) | 
                        Enumerable.From([{a:"foo",b:5},{a:"bar",b:20},{a:"foobar",b:10}])
.Average("$.b")
                     | 
                ||
| Count | Number | () | 
                        Enumerable.Range(1,10).Count()  | 
                
| bool predicate(T) | 
                        Enumerable.Range(1,10).Count("$>7")
                     | 
                ||
| Max | Number | () | 
                        Enumerable.Range(1,10).Max()  | 
                
| Number selector(T) | 
                        Enumerable.From([{a:"foo",b:5},{a:"bar",b:20},{a:"foobar",b:10}])
.Max("$.b")
                     | 
                ||
| Min | Number | () | 
                        Enumerable.Range(1,10).Min()  | 
                
| Number selector(T) | 
                        Enumerable.From([{a:"foo",b:5},{a:"bar",b:20},{a:"foobar",b:10}])
.Min("$.b")
                     | 
                ||
| MaxBy | T | Number selector(T) | 
                        Enumerable.From([{a:"foo",b:5},{a:"bar",b:20},{a:"foobar",b:10}])
.MaxBy("$.b").a
                     | 
                
| MinBy | T | Number selector(T) | 
                        Enumerable.From([{a:"foo",b:5},{a:"bar",b:20},{a:"foobar",b:10}])
.MinBy("$.b").a
                     | 
                
| Sum | Number | () | 
                        Enumerable.Range(1,10).Sum()  | 
                
| Number selector(T) | 
                        Enumerable.From([{a:"foo",b:5},{a:"bar",b:20},{a:"foobar",b:10}])
.Sum("$.b")
                     | 
                
| method name | return type | arguments | example (click code) | 
| ElementAt | T | int index | 
                        Enumerable.Range(1,10).ElementAt(3)  | 
                
| ElementAtOrDefault | T | int index, T defaultValue | 
                        Enumerable.Range(1,10).ElementAtOrDefault(15,-1)  | 
                
| First | T | () | 
                        Enumerable.Range(1,10).First()  | 
                
| bool predicate(T) | 
                        Enumerable.Range(1,10).First("$>4")
                     | 
                ||
| FirstOrDefault | T | T defaultValue | 
                        Enumerable.Empty().FirstOrDefault(-1)  | 
                
| T defaultValue, bool predicate(T) | 
                        Enumerable.Range(1,10).FirstOrDefault(-1,"$>15")  | 
                ||
| Last | T | () | 
                        Enumerable.Range(1,10).Last()  | 
                
| bool predicate(T) | 
                        Enumerable.Range(1,10).Last("$<4")
                     | 
                ||
| LastOrDefault | T | T defaultValue | 
                        Enumerable.Empty().LastOrDefault(-1)  | 
                
| T defaultValue, bool predicate(T) | 
                        Enumerable.Range(1,10).LastOrDefault(-1,"$>15")  | 
                ||
| Single | T | () | 
                        Enumerable.From("a").Single()
                     | 
                
| bool predicate(T) | 
                        Enumerable.Range(1,10).Single("$==4")
                     | 
                ||
| SingleOrDefault | T | T defaultValue | 
                        Enumerable.Empty().SingleOrDefault(-1)  | 
                
| T defaultValue, bool predicate(T) | 
                        Enumerable.Range(1,10).SingleOrDefault(-1,"$==15")  | 
                ||
| Skip | Enumerable | int count | 
                        Enumerable.Range(1,10).Skip(5)  | 
                
| SkipWhile | Enumerable | bool predicate(T) | 
                        Enumerable.Range(1,10).SkipWhile("$<=5")
                     | 
                
| bool predicate(T, int index) | 
                        Enumerable.Range(1,10).SkipWhile("value,index=>value+index<=5")
                     | 
                ||
| Take | Enumerable | int count | 
                        Enumerable.Range(1,10).Take(5)  | 
                
| TakeWhile | Enumerable | bool predicate(T) | 
                        Enumerable.Range(1,10).TakeWhile("$<=5")
                     | 
                
| bool predicate(T, int index) | 
                        Enumerable.Range(1,10).TakeWhile("value,index=>value+index<=5")
                     | 
                ||
| TakeExceptLast | Enumerable | () | 
                        Enumerable.Range(1,10).TakeExceptLast()  | 
                
| Number count | 
                        Enumerable.Range(1,10).TakeExceptLast(3)  | 
                ||
| TakeFromLast | Enumerable | Number count | 
                        Enumerable.Range(1,10).TakeFromLast(3)  | 
                
| IndexOf | int | T item | 
                        Enumerable.Range(1,10).IndexOf(3) Enumerable.Range(1,10).IndexOf(15)  | 
                
| LastIndexOf | int | T item | 
                        Enumerable.From([1,2,3,2,5]).LastIndexOf(2) Enumerable.From([1,2,3,2,5]).LastIndexOf(20)  | 
                
| method name | return type | arguments | example (click code) | 
| ToArray | Array | () | 
                        Enumerable.Range(1,10).ToArray()  | 
                
| ToLookup | Lookup | TKey keySelector(T) | 
                        var lookup = Enumerable.From(["temp.xls", "temp.pdf", "temp.jpg", "temp2.pdf"])
.ToLookup("$.match(/\\.(.+$)/)[1]");
lookup.ToEnumerable().Select("$.Key() + ' : ' + $.ToArray()")
                     | 
                
| TKey keySelector(T), TElement elementSelector(T) | 
                        var lookup = Enumerable.From(["temp.xls", "temp.pdf", "temp.jpg", "temp2.pdf"])
.ToLookup("$.match(/\\.(.+$)/)[1]","$.match(/(.+)\\.[^.]+$/)[1]");
lookup.ToEnumerable().Select("$.Key() + ' : ' + $.ToArray()")
                     | 
                ||
| TKey keySelector(T), TElement elementSelector(T), TCompare compareSelector(TKey) | 
                        var lookup = Enumerable.From(["temp.xls", "temp.pdf", "temp.jpg", "temp2.pdf"])
.ToLookup("","","$.match(/\\.(.+$)/)[1]");
lookup.ToEnumerable().Select("$.Key() + ' : ' + $.ToArray()")
                     | 
                ||
| ToObject | Object | String keySelector(T), T elementSelector(T) | 
                        var obj = Enumerable.Range(1,10).Select("value,index=>{id:'id_' + index,value:value}")
.ToObject("$.id","$.value");
Enumerable.From(obj).Select("$.Key + ':' + $.Value")
                     | 
                
| ToDictionary | Dictionary | TKey keySelector(T), TElement elementSelector(T) | 
                        var dict = Enumerable.Range(1,10).Select("value,index=>{id:'id_' + index,value:value}")
.ToDictionary("$.id","$.value");
dict.ToEnumerable().Select("$.Key + ':' + $.Value")
                     | 
                
| TKey keySelector(T), TElement elementSelector(T), TCompare compareSelector(TKey) | 
                        var dict = Enumerable.Range(1,10).Select("value,index=>{id:'id_' + index,value:value}")
.ToDictionary("$","$.value","$;id");
dict.ToEnumerable().Select("$.Key.id + ':' + $.Value")
                     | 
                ||
| ToJSON | String | () | 
                        // ToJSON only work Native JSON support browser or include json2.js
Enumerable.From([{Foo:1, Bar:'z'},{Foo:5, Bar:null}]).ToJSON()
                     | 
                
| TResult replacer(TKey, TValue) | 
                        Enumerable.From(["a","b","c"])
.ToJSON(function(k,v){return (typeof v === 'object') ? v : v.toString().toUpperCase()})
                     | 
                ||
| TResult replacer(TKey, TValue), Number space | 
                        Enumerable.Range(1, 5).ToJSON(null, 4)  | 
                ||
| ToString | String | () | 
                        Enumerable.Range(0,10).ToString()  | 
                
| String separator | 
                        Enumerable.Range(0,10).ToString("-")
                     | 
                ||
| String separator, T selector(T) | 
                        Enumerable.From([{k:"foo"},{k:"bar"}]).ToString("-","$.k")
                     | 
                
| method name | return type | arguments | example (click code) | 
| Do | Enumerable | void action(T) | 
                        Enumerable.Range(1,10).Do(function(i){
    document.write('do:'+ i +'|');})
 .Where("$%2==0")
                     | 
                
| void action(T, index) | 
                        Enumerable.Range(1,10).Do(function(value,index){
    document.write("do:" + index + '-' + value + "<br/>");})
.OrderBy("").Take(2)
                     | 
                ||
| ForEach | void | void action(T) | 
                        Enumerable.Range(1,10).ForEach(function(i){
    document.write(i);})
                     | 
                
| void action(T, index) | 
                        Enumerable.Range(1,10).ForEach(function(value,index){
    document.write(index + ':' + value + "<br/>");})
                     | 
                ||
| bool func(T) | 
                        Enumerable.Range(1, 10).ForEach(function(i)
{
    if (i % 2 == 0) return; // continue
    if (i > 6) return false; // break
    document.write(i + "<br/>");
})
                     | 
                ||
| bool func(T, index) | 
                        Enumerable.Repeat("aaa", 10).ForEach(function(s,index)
{
    if (index % 2 == 0) return; // continue
    if (index > 6) return false; // break
    document.write(index + s + "<br/>");
})
                     | 
                ||
| Write | void | () | 
                        Enumerable.Range(1,10).Write()  | 
                
| String separator | 
                        Enumerable.Range(1,10).Write("-")
                     | 
                ||
| String separator, T selector(T) | 
                        Enumerable.From([{a:"foo",b:1},{a:"bar",b:3}])
.Write("-","$.a + ':' + $.b")
                     | 
                ||
| WriteLine | void | () | 
                        Enumerable.Range(1,10).WriteLine()  | 
                
| T selector(T) | 
                        Enumerable.From([{a:"foo",b:1},{a:"bar",b:3}])
.WriteLine("$.a + ':' + $.b")
                     | 
                ||
| Force | void | () | 
                        Enumerable.Range(1,10).Trace().Force()  | 
                
| method name | return type | arguments | example (click code) | 
| Let | Enumerable | Enumerable<TR> func(Enumerable<T>) | 
                        Enumerable.Range(1,10).Let(function(x){return x.Zip(x.Skip(1),"x,y=>x + ':' + y")})
                     | 
                
| Share | Enumerable | () | 
                        var share = Enumerable.Range(1,10).Share();
share.Take(4).WriteLine();
document.write("--- <br>");
share.Skip(2)
                     | 
                
| MemoizeAll | Enumerable | () | 
                        var mem = Enumerable.Range(1,10)
.Do("document.write('--->' + $ + '<br>')").MemoizeAll();
mem.Where("$%2==0").WriteLine();
document.write("--- <br>");
mem.Where("$%2==0")
                     | 
                
| method name | return type | arguments | example (click code) | 
| Catch | Enumerable | void handler(Error) | 
                        Enumerable.Range(1,10).Select(function(i){
    if(i == 5) throw new Error("enumerable_error"); else return i;})
.Catch("document.write($.message)")
                     | 
                
| Finally | Enumerable | void finallyAction() | 
                        Enumerable.Range(1,5).Finally(function(){document.write("finally")})
                     | 
                
| method name | return type | arguments | example (click code) | 
| Trace | Enumerable | () | 
                        // Trace is output to console.log Enumerable.Range(1,10).Trace().Force()  | 
                
| String message | 
                        Enumerable.Range(1,10).Trace("Gen").Where("$%3==0").Trace("Filtered").Force()
                     | 
                ||
| String message, T selector(T) | 
                        Enumerable.From([{a:"foo",b:1},{a:"bar",b:3}])
.Trace("Gen","$.a").Force()
                     | 
                
| method name | return type | arguments | example (click code) | 
| GetEnumerator | IEnumerator | () | 
                        Enumerable.Range(1,10).GetEnumerator()  | 
                
| MoveNext | Boolean | () | 
                        Enumerable.Range(1,10).GetEnumerator().MoveNext()  | 
                
| Current | T | () | 
                        Enumerable.Range(1,10).GetEnumerator().Current()  | 
                
| Dispose | void | () | 
                        Enumerable.Range(1,10).GetEnumerator().Dispose()  | 
                
| method name | return type | arguments | example (click code) | 
| Add | void | TKey key, TValue value | 
                        Enumerable.Empty().ToDictionary().Add(1, 'aaa')  | 
                
| Get | TValue | TKey key | 
                        Enumerable.Empty().ToDictionary().Get(1)  | 
                
| Set | Boolean | TKey key, TValue value | 
                        Enumerable.Empty().ToDictionary().Set(1, 'zzz')  | 
                
| Contains | Boolean | TKey key | 
                        Enumerable.Empty().ToDictionary().Contains(1)  | 
                
| Clear | void | () | 
                        Enumerable.Empty().ToDictionary().Clear()  | 
                
| Remove | void | TKey key | 
                        Enumerable.Empty().ToDictionary().Remove(1)  | 
                
| Count | Number | () | 
                        Enumerable.Empty().ToDictionary().Count()  | 
                
| ToEnumerable | Enumerable | () | 
                        var dict = Enumerable.Empty().ToDictionary();
dict.Add("foo", 10); dict.Add("bar", 200);
dict.ToEnumerable().Select("$.Key + ':' + $.Value")
                     | 
                
| method name | return type | arguments | example (click code) | 
| Get | Enumerable<TElement> | TKey key | 
                        Enumerable.From([{x:1,s:'a'},{x:1,s:'z'}])
.ToLookup("$.x").Get(1).Select("$.x + ':' + $.s")
                     | 
                
| Contains | Boolean | TKey key | 
                        Enumerable.From([{x:1,s:'a'},{x:1,s:'z'}])
.ToLookup("$.x").Contains(1)
                     | 
                
| Count | Number | () | 
                        Enumerable.Range(1,5).ToLookup().Count()  | 
                
| ToEnumerable | Enumerable<Grouping> | () | 
                        Enumerable.From([{a:1,s:'foo'},{a:1,s:'bar'},{a:2,s:'zzzzz'}])
.ToLookup("$.a").ToEnumerable()
.Select("$.Key() + ':' + $.Select('$.s').ToString('-')")
                     | 
                
| method name | return type | arguments | example (click code) | 
| Key | TKey | () | 
                        Enumerable.From([{id:"foo",x:10},{id:"bar",x:20},{id:"foo",x:100}])
.GroupBy("$.id").ToArray()[0] // grouping
.Key()
                     | 
                
| All Enumerable Methods | - | - | 
                        var grouping = Enumerable.From([{id:"foo",x:10},{id:"foo",x:25},{id:"foo",x:100}])
.GroupBy("$.id").ToArray()[0];
grouping.Where("$.x % 10 == 0").Select("$.id + ':' + $.x")
                     | 
                
| method name | return type | arguments | example (click code) | 
| TojQuery | jQuery | () | 
                        // Enumerable.Repeat("foo",10).TojQuery()
                     | 
                
| toEnumerable | Enumerable<jQuery> | () | 
                        // $("div").toEnumerable()
                     | 
                
| method name | return type | arguments | example (click code) | 
| ToObservable | Rx.Observable | () | 
                        // Enumerable.Range(1,10).ToObservable()  | 
                
| ToEnumerable | Enumerable | () | 
                        // Rx.Observable.Range(1,10).ToEnumerable()  |