代码拉取完成,页面将自动刷新
同步操作将从 @HuangBingGui/JsonSql.js 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>JsonSql.js</title>
<script type="text/javascript" src="JsonSql.js"></script>
<script src="https://code.jquery.com/jquery-1.11.3.js"></script>
<script type="text/javascript">
var gp=[];
var gpMonth=[];
var gpYear=[];
var gpYearBefore=[];
var textStack = []
document.write = function ()
{
JsonSql.From(arguments).ForEach("textStack.push($)");
}
function evaluate(code)
{
textStack.length = 0;
var value;
try
{
eval(code + '.Take(1001).WriteLine()');
value = textStack.join("");
} catch (e)
{
textStack.length = 0;
try
{
value = eval("(" + code + ")");
document.write(value);
value = textStack.join("");
}
catch (e2)
{
value = "error";
}
}
return value;
}
function expand()
{
var code = (this.innerText || this.textContent);
var value = evaluate(code);
var p = document.createElement("p");
p.innerHTML = value;
this.appendChild(p);
this.onclick = collapse;
}
function collapse()
{
this.removeChild(this.lastChild);
this.onclick = expand;
}
function execute()
{
$.ajax({
type: "get",
async: false,
url: "http://q.stock.sohu.com/hisHq?code="+$("#key").val()+"&start="+$("#start").val()+"&end="+$("#end").val()+"&stat=1&order=D&period=d&callback=historySearchHandler&rt=jsonp",
dataType: "jsonp"
});
gp=gp;
var value = evaluate(this.value);
//value=value+"<br>日期:"+gp[0][0]+"<br>开盘"+gp[0][1]+"收盘"+gp[0][2]+"涨跌"+gp[0][3]+"涨幅"+gp[0][4]+"<br>最低"+gp[0][5]+"最高"+gp[0][6]+"<br>成交量"+gp[0][7]+"成交额"+gp[0][8]+"换手"+gp[0][9];
gp=gpMonth;
var valueMonth = evaluate(this.value);
value=value+ "<br>Month:"+valueMonth;
//document.getElementById("codeResultMessageMonth").innerHTML = "Month:"+valueMonth;
gp=gpYear;
var valueYear = evaluate(this.value);
value=value+ "<br>Year:"+valueYear;
//document.getElementById("codeResultMessageYear").innerHTML = "Year:"+valueYear;
gp=gpYearBefore;
var valueYearBefore = evaluate(this.value);
value=value+"<br>YearBefore:"+valueYearBefore;
//document.getElementById("codeResultMessageYearBefore").innerHTML = "YearBefore:"+valueYearBefore;
gp=gp;
document.getElementById("codeResult").innerHTML = value;
}
function historySearchHandlerMonth(data){
gpMonth=data[0].hq;
}
function historySearchHandlerYear(data){
gpYear=data[0].hq;
}
function historySearchHandlerYearBefore(data){
gpYearBefore=data[0].hq;
}
function historySearchHandler(data){
gp=data[0].hq;
}
jQuery(document).ready(function(){
$("#start").val(year+month+'01');
$("#end").val(year+month+dates)
//各参数的含义为:code:股票代码,以cn_开头,start:起始时间,end:截止时间,
//stat:统计信息,为0的时候就不返回stat对应的值了,order:排序方法(D表示降序排,A表示升序排),period:数据周期(d表示日线,m表示月线,w表示周线)。
//返回的数据以这条为例"2018-07-20","61.22","61.83","0.61","1.00%","61.22","62.69","57637","35856.55","0.53%"
//分别表示日期,开盘,收盘,涨跌,涨幅,最低,最高,成交量,成交额,换手。
$.ajax({
type: "get",
async: false,
url: "http://q.stock.sohu.com/hisHq?code="+$("#key").val()+"&start="+$("#start").val()+"&end="+$("#end").val()+"&stat=1&order=D&period=d&callback=historySearchHandler&rt=jsonp",
dataType: "jsonp"
});
$.ajax({
type: "get",
async: false,
url: "http://q.stock.sohu.com/hisHq?code="+$("#key").val()+"&start="+year+monthBefore+"01"+"&end="+year+month+dates+"&stat=1&order=D&period=d&callback=historySearchHandlerMonth&rt=jsonp",
dataType: "jsonp"
});
$.ajax({
type: "get",
async: false,
url: "http://q.stock.sohu.com/hisHq?code="+$("#key").val()+"&start="+year+"0101"+"&end="+year+month+dates+"&stat=1&order=D&period=d&callback=historySearchHandlerYear&rt=jsonp",
dataType: "jsonp"
});
$.ajax({
type: "get",
async: false,
url: "http://q.stock.sohu.com/hisHq?code="+$("#key").val()+"&start="+yearBefore+"0101"+"&end="+year+month+dates+"&stat=1&order=D&period=d&callback=historySearchHandlerYearBefore&rt=jsonp",
dataType: "jsonp"
});
});
//今天是年月日周几
var arr = ['日','一','二','三','四','五','六',]
var date =new Date();//记住这个是大写开头的Date
var year=date.getFullYear();
var yearBefore=date.getFullYear()-1;
var month=date.getMonth()+1;
var monthBefore=date.getMonth();
var dates=date.getDate();
var day=date.getDay();
var days=arr[day];
console.log('今天是'+year+'年'+month+'月'+dates+'日'+'周'+days);
if(month<10){month="0"+month;}
if(monthBefore==0){monthBefore=12;year=year-1;}
if(monthBefore<10){monthBefore="0"+monthBefore;}
if(dates<10){dates="0"+dates;}
window.onload = function ()
{
JsonSql.From(document.getElementsByTagName("pre"))
.ForEach("$.onclick = expand");
var input = document.getElementById("codeInput");
input.onkeyup = execute;
execute.apply(input);
}
</script>
<style type="text/css">
pre
{
cursor: pointer;
}
table
{
width: 100%;
border-collapse: collapse;
}
td
{
border: solid black;
border-width: 1px 0 1px 0;
}
h2
{
width: 100%;
}
</style>
</head>
<body>
<h1>
JsonSql.js-V3.1.0.0</h1>
<p></p>
<h2>可以处理对象、Json、数组的筛选、统计、分组等功能,支持方法或sql语句</h2>
编号<input name="key" value="cn_000776" id="key">601881/000725/000776
开始<input name="start" value="20200101" id="start">
结束<input name="end" value="20200319" id="end">
<table>
<tr>
<td style="width: 50%; vertical-align: top">
<textarea cols="10" rows="10" id="codeInput" style="width: 100%">
//对象用$.x ,数组用$[index]
//方法执行,实例一
JsonSql.From(gp)
.Select("{day:$[0],close:$[2]}")
.Where("$.close == JsonSql.From(gp).Min('$[2]')")
.ToJSON()
//语句执行,实例二
//$JsonSql(" select {day:$[0],close:$[2]} from gp where $.close == JsonSql.From(gp).Min('$[2]')")
//$JsonSql(" from gp where $[2] == JsonSql.From(gp).Min('$[2]')")
</textarea>
</td>
<td style="vertical-align: top">
<p id="codeResult" style="padding-left: 20px">
</p>
</td>
</tr>
<!--tr><td>
<p id="codeResultMessageMonth" style="padding-left: 20px"></p>
</td></tr>
<tr><td>
<p id="codeResultMessageYear" style="padding-left: 20px"></p>
</td></tr>
<tr><td>
<p id="codeResultMessageYearBefore" style="padding-left: 20px"></p>
</td></tr-->
</table>
<h2 class="clear:both">
Generating Methods</h2>
<table>
<thead>
<tr>
<td>
method name
</td>
<td>
return type
</td>
<td>
arguments
</td>
<td>
example (click code)
</td>
</tr>
</thead>
<tbody>
<tr>
<td>
Sql
</td>
<td>
JsonSql
</td>
<td>
params T obj
</td>
<td>
<pre>JsonSql.Sql(" select * from gp ").ToJSON()</pre>
<pre>JsonSql.Sql(" select * from gp ").ToArray()</pre>
<pre>$JsonSql(" select * from gp ")</pre>
<pre>$JsonSql(" from gp ")</pre>
<pre>$JsonSqlToJSON(" select * from gp ")</pre>
<pre>$JsonSqlToArray(" select * from gp ")</pre>
</td>
</tr>
<tr>
<td>
Choice
</td>
<td>
JsonSql
</td>
<td>
params T obj
</td>
<td>
<pre>JsonSql.Choice("a","b","c","d").Take(10)</pre>
<pre>JsonSql.Choice(["a","b","c","d"]).Take(10)</pre>
</td>
</tr>
<tr>
<td>
Cycle
</td>
<td>
JsonSql
</td>
<td>
params T obj
</td>
<td>
<pre>JsonSql.Cycle(1,"foo",true).Take(10)</pre>
<pre>JsonSql.Cycle([1,"foo",true]).Take(10)</pre>
</td>
</tr>
<tr>
<td>
Empty
</td>
<td>
JsonSql
</td>
<td>
()
</td>
<td>
<pre>JsonSql.Empty()</pre>
</td>
</tr>
<tr>
<td rowspan="6">
From
</td>
<td rowspan="6">
JsonSql
</td>
<td>
Array obj
</td>
<td>
<pre>var arr = [1,124,"aaa",function(){},false];
JsonSql.From(arr)</pre>
</td>
</tr>
<tr>
<td>
Object obj
</td>
<td>
<pre>var obj = {a:3,b:"3",z:function(){},d:true};
JsonSql.From(obj).Select("$.Key + ':' + $.Value")</pre>
</td>
</tr>
<tr>
<td>
NodeList obj
</td>
<td>
<pre>var node = document.getElementsByTagName("h2");
JsonSql.From(node).Select("$.innerHTML")</pre>
</td>
</tr>
<tr>
<td>
Number obj
</td>
<td>
<pre>JsonSql.From(5)</pre>
</td>
</tr>
<tr>
<td>
String obj
</td>
<td>
<pre>JsonSql.From("foobar")</pre>
</td>
</tr>
<tr>
<td>
IEnumerable(WSH) obj
</td>
<td>
<pre>
// using with Windows Script Host
// var fso = WScript.CreateObject("Scripting.FileSystemObject");
// var files = fso.GetFolder("C:\\").Files;
// JsonSql.From(files).Select("$.Name").ForEach("WScript.Echo($)");</pre>
</td>
</tr>
<tr>
<td>
Return
</td>
<td>
JsonSql
</td>
<td>
T element
</td>
<td>
<pre>JsonSql.Return("foobar")</pre>
</td>
</tr>
<tr>
<td rowspan="3">
Matches
</td>
<td rowspan="3">
JsonSql
</td>
<td>
string input, RegExp pattern
</td>
<td>
<pre>JsonSql.Matches("xbcyBCzbc", /(.)bc/i)
.Select("'index='+$.index+' all='+$[0]+' capture='+$[1]")</pre>
</td>
</tr>
<tr>
<td>
string input, string pattern
</td>
<td>
<pre>JsonSql.Matches("xbcyBCzbc", "(.)bc")
.Select("'index='+$.index+' all='+$[0]+' capture='+$[1]")</pre>
</td>
</tr>
<tr>
<td>
string input, string pattern, string flags
</td>
<td>
<pre>JsonSql.Matches("xbcyBCzbc", "(.)bc", "i")
.Select("'index='+$.index+' all='+$[0]+' capture='+$[1]")</pre>
</td>
</tr>
<tr>
<td rowspan="2">
Range
</td>
<td rowspan="2">
JsonSql
</td>
<td>
int start, int count
</td>
<td>
<pre>JsonSql.Range(10,5)</pre>
</td>
</tr>
<tr>
<td>
int start, int count, int step
</td>
<td>
<pre>JsonSql.Range(10,5,3)</pre>
</td>
</tr>
<tr>
<td rowspan="2">
RangeDown
</td>
<td rowspan="2">
JsonSql
</td>
<td>
int start, int count
</td>
<td>
<pre>JsonSql.RangeDown(10,5)</pre>
</td>
</tr>
<tr>
<td>
int start, int count, int step
</td>
<td>
<pre>JsonSql.RangeDown(10,5,3)</pre>
</td>
</tr>
<tr>
<td rowspan="2">
RangeTo
</td>
<td rowspan="2">
JsonSql
</td>
<td>
int start, int to
</td>
<td>
<pre>JsonSql.RangeTo(10,18)</pre>
<pre>JsonSql.RangeTo(3,-5)</pre>
</td>
</tr>
<tr>
<td>
int start, int to, int step
</td>
<td>
<pre>JsonSql.RangeTo(1,9,3)</pre>
<pre>JsonSql.RangeTo(1,-9,3)</pre>
</td>
</tr>
<tr>
<td rowspan="2">
Repeat
</td>
<td rowspan="2">
JsonSql
</td>
<td>
T obj
</td>
<td>
<pre>JsonSql.Repeat(3).Take(5)</pre>
</td>
</tr>
<tr>
<td>
T obj, int count
</td>
<td>
<pre>JsonSql.Repeat("foo",10)</pre>
</td>
</tr>
<tr>
<td>
RepeatWithFinalize
</td>
<td>
JsonSql
</td>
<td>
T initializer(), void finalizer(T)
</td>
<td>
<pre>// example for WScript(Text EnumerateLines and Finally Close)
// var fso = WScript.CreateObject("Scripting.FileSystemObject");
// JsonSql.RepeatWithFinalize(
// function () { return fso.OpenTextFile("C:\\file.txt") },
// function (ts) { ts.Close() })
// .TakeWhile(function (ts) { return !ts.AtEndOfStream })
// .Select(function (ts) { return ts.ReadLine() });
</pre>
</td>
</tr>
<tr>
<td rowspan="2">
Generate
</td>
<td rowspan="2">
JsonSql
</td>
<td>
T func()
</td>
<td>
<pre>JsonSql.Generate("Math.random()").Take(5)</pre>
</td>
</tr>
<tr>
<td>
T func(), int count
</td>
<td>
<pre>JsonSql.Generate("Math.random()", 5)</pre>
</td>
</tr>
<tr>
<td rowspan="3">
ToInfinity
</td>
<td rowspan="3">
JsonSql
</td>
<td>
()
</td>
<td>
<pre>JsonSql.ToInfinity().Take(5)</pre>
</td>
</tr>
<tr>
<td>
int start
</td>
<td>
<pre>JsonSql.ToInfinity(1000).Take(5)</pre>
</td>
</tr>
<tr>
<td>
int start, int step
</td>
<td>
<pre>JsonSql.ToInfinity(1000,5).Take(5)</pre>
</td>
</tr>
<tr>
<td rowspan="3">
ToNegativeInfinity
</td>
<td rowspan="3">
JsonSql
</td>
<td>
()
</td>
<td>
<pre>JsonSql.ToNegativeInfinity().Take(5)</pre>
</td>
</tr>
<tr>
<td>
int start
</td>
<td>
<pre>JsonSql.ToNegativeInfinity(1000).Take(5)</pre>
</td>
</tr>
<tr>
<td>
int start, int step
</td>
<td>
<pre>JsonSql.ToNegativeInfinity(1000,5).Take(5)</pre>
</td>
</tr>
<tr>
<td>
Unfold
</td>
<td>
JsonSql
</td>
<td>
T seed, T func(T)
</td>
<td>
<pre>JsonSql.Unfold(5, "$+3").Take(10)</pre>
</td>
</tr>
</tbody>
</table>
<h2>
Projection and Filtering Methods</h2>
<table>
<thead>
<tr>
<td>
method name
</td>
<td>
return type
</td>
<td>
arguments
</td>
<td>
example (click code)
</td>
</tr>
</thead>
<tbody>
<tr>
<td rowspan="3">
CascadeBreadthFirst
</td>
<td rowspan="3">
JsonSql
</td>
<td>
T[] func(T)
</td>
<td>
<pre>JsonSql.Return(1).CascadeBreadthFirst("$+$").Take(5)</pre>
</td>
</tr>
<tr>
<td>
T[] func(T), T resultSelector(T)
</td>
<td>
<pre>JsonSql.Return(1).CascadeBreadthFirst("$+$","$*$").Take(5)</pre>
</td>
</tr>
<tr>
<td>
T[] func(T), T resultSelector(T, int)
</td>
<td>
<pre>JsonSql.Return(document.body)
.CascadeBreadthFirst("$.childNodes", "v,n=>{value:v,nestLevel:n}")
.Where("$.nestLevel<3 && $.value.nodeType == 1")
.Select("$.nestLevel + ':' + $.value.tagName")</pre>
</td>
</tr>
<tr>
<td rowspan="3">
CascadeDepthFirst
</td>
<td rowspan="3">
JsonSql
</td>
<td>
T[] func(T)
</td>
<td>
<pre>JsonSql.Return(1).CascadeDepthFirst("$+$").Take(5)</pre>
</td>
</tr>
<tr>
<td>
T[] func(T), T resultSelector(T)
</td>
<td>
<pre>JsonSql.Return(1).CascadeDepthFirst("$+$","$*$").Take(5)</pre>
</td>
</tr>
<tr>
<td>
T[] func(T), T resultSelector(T, int)
</td>
<td>
<pre>JsonSql.Return(document.body)
.CascadeDepthFirst("$.childNodes", "v,n=>{value:v,nestLevel:n}")
.Where("$.nestLevel<3 && $.value.nodeType == 1")
.Select("$.nestLevel + ':' + $.value.tagName")</pre>
</td>
</tr>
<tr>
<td>
Flatten
</td>
<td>
JsonSql
</td>
<td>
()
</td>
<td>
<pre>var array = [1,[234,2,[62,3]],[234,5],3];
JsonSql.From(array).Flatten()</pre>
</td>
</tr>
<tr>
<td>
Pairwise
</td>
<td>
JsonSql
</td>
<td>
T selector(T, T)
</td>
<td>
<pre>JsonSql.Range(1,10)
.Pairwise("prev,next=>prev + ':' + next")</pre>
</td>
</tr>
<tr>
<td rowspan="3">
Scan
</td>
<td rowspan="3">
JsonSql
</td>
<td>
T func(T, T)
</td>
<td>
<pre>JsonSql.Range(1,10).Scan("a,b=>a+b")</pre>
</td>
</tr>
<tr>
<td>
T seed, T func(T, T)
</td>
<td>
<pre>JsonSql.Range(1,10).Scan(100,"a,b=>a+b")</pre>
</td>
</tr>
<tr>
<td>
T seed, T func(T, T), T resultSelector(T)
</td>
<td>
<pre>JsonSql.Range(1,10).Scan(100,"a,b=>a+b","$*10")</pre>
</td>
</tr>
<tr>
<td rowspan="2">
Select
</td>
<td rowspan="2">
JsonSql
</td>
<td>
T selector(T)
</td>
<td>
<pre>JsonSql.Range(1,10).Select("$*10")</pre>
</td>
</tr>
<tr>
<td>
T selector(T, int)
</td>
<td>
<pre>JsonSql.RangeDown(10,10).Select("value,index=>index + ':' + value")</pre>
</td>
</tr>
<tr>
<td rowspan="4">
SelectMany
</td>
<td rowspan="4">
JsonSql
</td>
<td>
T[] collectionSelector(T)
</td>
<td>
<pre>JsonSql.Range(1,3).SelectMany("JsonSql.Repeat($,3)")</pre>
</td>
</tr>
<tr>
<td>
T[] collectionSelector(T, int)
</td>
<td>
<pre>JsonSql.Range(5,5)
.SelectMany("value,index=>JsonSql.Repeat('str'+value,index+1)")</pre>
</td>
</tr>
<tr>
<td>
T[] collectionSelector(T), resultSelector(T, T)
</td>
<td>
<pre>JsonSql.Range(1,3)
.SelectMany("JsonSql.Repeat($,3)","first,middle=>first + ':' + middle*10")</pre>
</td>
</tr>
<tr>
<td>
T[] collectionSelector(T, int), resultSelector(T, T)
</td>
<td>
<pre>JsonSql.Range(5,5)
.SelectMany("v,i=>JsonSql.Repeat('str'+v,i+1)","f,m=>f + ':' + m")</pre>
</td>
</tr>
<tr>
<td rowspan="2">
Where
</td>
<td rowspan="2">
JsonSql
</td>
<td>
bool predicate(T)
</td>
<td>
<pre>JsonSql.Range(1,10).Where("$%2==0")</pre>
</td>
</tr>
<tr>
<td>
bool predicate(T, int)
</td>
<td>
<pre>JsonSql.Range(1,10).Where("value,index=>value*index>10")</pre>
</td>
</tr>
<tr>
<td>
OfType
</td>
<td>
JsonSql
</td>
<td>
Class type
</td>
<td>
<pre>JsonSql.From([1,"a",2,"b","c",3]).OfType(Number)</pre>
<pre>JsonSql.From([1,"a",2,"b","c",3]).OfType(String)</pre>
<pre>function ClassA(v){this.v = v}
JsonSql.From([new ClassA("a"),1,2,new ClassA("b")])
.OfType(ClassA).Select("$.v")</pre>
</td>
</tr>
<tr>
<td rowspan="2">
Zip
</td>
<td rowspan="2">
JsonSql
</td>
<td>
T[] second,T selector(T, T)
</td>
<td>
<pre>JsonSql.RangeDown(10,10)
.Zip(JsonSql.Range(1,10),"outer,inner=>outer + ':' + inner")</pre>
</td>
</tr>
<tr>
<td>
T[] second,T selector(T, T, int)
</td>
<td>
<pre>JsonSql.RangeDown(10,10)
.Zip(JsonSql.Range(1,10),"outer,inner,index=>index + ':' + outer*inner")</pre>
</td>
</tr>
</tbody>
</table>
<h2>
Join Methods</h2>
<table>
<thead>
<tr>
<td>
method name
</td>
<td>
return type
</td>
<td>
arguments
</td>
<td>
example (click code)
</td>
</tr>
</thead>
<tbody>
<tr>
<td rowspan="2">
Join
</td>
<td rowspan="2">
JsonSql
</td>
<td>
T[] inner, T outerKeySelector(T), T innerKeySelector(T), T resultSelector(T, T)
</td>
<td>
<pre>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];
JsonSql.From(array1)
.Join(array2,"","","outer,inner=>outer + ':' + inner")</pre>
</td>
</tr>
<tr>
<td>
T[] inner, T outerKeySelector(T), T innerKeySelector(T), T resultSelector(T, T),
T compareSelector(T)
</td>
<td>
<pre>var array1 = [10,405,50,135];
var array2 = [1,4,7,8];
JsonSql.From(array1)
.Join(array2,"","","outer,inner=>outer + ':' + inner","$%2==0")</pre>
</td>
</tr>
<tr>
<td rowspan="2">
GroupJoin
</td>
<td rowspan="2">
JsonSql
</td>
<td>
T[] inner, T outerKeySelector(T), T innerKeySelector(T), T resultSelector(T, JsonSql)
</td>
<td>
<pre>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];
JsonSql.From(array1)
.GroupJoin(array2,"","","outer,lookup=>outer + ':' + lookup.ToString('-')")</pre>
</td>
</tr>
<tr>
<td>
T[] inner, T outerKeySelector(T), T innerKeySelector(T), T resultSelector(T, JsonSql),
T compareSelector(T)
</td>
<td>
<pre>var array1 = [10,405,50,135];
var array2 = [1,4,7,8];
JsonSql.From(array1)
.GroupJoin(array2,"","","outer,lookup=>outer + ':' + lookup.ToString('-')","$%2==0")</pre>
</td>
</tr>
</tbody>
</table>
<h2>
Set Methods</h2>
<table>
<thead>
<tr>
<td>
method name
</td>
<td>
return type
</td>
<td>
arguments
</td>
<td>
example (click code)
</td>
</tr>
</thead>
<tbody>
<tr>
<td>
All
</td>
<td>
Boolean
</td>
<td>
bool predicate(T)
</td>
<td>
<pre>JsonSql.Range(1,10).All("$<5")</pre>
<pre>JsonSql.Range(1,10).All("$<15")</pre>
</td>
</tr>
<tr>
<td rowspan="2">
Any
</td>
<td rowspan="2">
Boolean
</td>
<td>
()
</td>
<td>
<pre>JsonSql.Range(1,0).Any()</pre>
<pre>JsonSql.Range(1,10).Any()</pre>
</td>
</tr>
<tr>
<td>
bool predicate(T)
</td>
<td>
<pre>JsonSql.Range(1,10).Any("$==5")</pre>
<pre>JsonSql.Range(1,10).Any("$==15")</pre>
</td>
</tr>
<tr>
<td>
Concat
</td>
<td>
JsonSql
</td>
<td>
T[] second
</td>
<td>
<pre>JsonSql.Range(1,5).Concat(JsonSql.Repeat("foo",5))</pre>
</td>
</tr>
<tr>
<td>
Insert
</td>
<td>
JsonSql
</td>
<td>
int index, T[] second
</td>
<td>
<pre>JsonSql.Range(1,5).Insert(3,JsonSql.Repeat("foo",5))</pre>
</td>
</tr>
<tr>
<td>
Alternate
</td>
<td>
JsonSql
</td>
<td>
T value
</td>
<td>
<pre>JsonSql.Range(1,5).Alternate(-1)</pre>
</td>
</tr>
<tr>
<td rowspan="2">
Contains
</td>
<td rowspan="2">
Boolean
</td>
<td>
T value
</td>
<td>
<pre>JsonSql.Range(1,5).Contains(3)</pre>
<pre>JsonSql.Range(1,5).Contains(10)</pre>
</td>
</tr>
<tr>
<td>
T value, T compareSelector(T)
</td>
<td>
<pre>JsonSql.Range(1,5).Select("{test:$}").Contains(3)</pre>
<pre>JsonSql.Range(1,5).Select("{test:$}").Contains(3,"$.test")</pre>
</td>
</tr>
<tr>
<td>
DefaultIfEmpty
</td>
<td>
JsonSql
</td>
<td>
T defaultValue
</td>
<td>
<pre>JsonSql.Range(1,5).DefaultIfEmpty("default")</pre>
<pre>JsonSql.Range(1,0).DefaultIfEmpty("default")</pre>
</td>
</tr>
<tr>
<td rowspan="2">
Distinct
</td>
<td rowspan="2">
JsonSql
</td>
<td>
()
</td>
<td>
<pre>var array = [1,412,5,3,5,412,7];
JsonSql.From(array).Distinct()</pre>
</td>
</tr>
<tr>
<td>
T compareSelector(T)
</td>
<td>
<pre>var seq = JsonSql.Range(1,10).Select("{test:$%3}");
seq.Distinct("$.test").Select("$.test")</pre>
</td>
</tr>
<tr>
<td rowspan="2">
Except
</td>
<td rowspan="2">
JsonSql
</td>
<td>
T[] second
</td>
<td>
<pre>var array1 = [1,412,5,3,5,412,7];
var array2 = [20,12,5,5,7,310];
JsonSql.From(array1).Except(array2)</pre>
</td>
</tr>
<tr>
<td>
T[] second, T compareSelector(T)
</td>
<td>
<pre>var seq1 = JsonSql.Range(1,10).Select("{test:$%5}");
var seq2 = JsonSql.Range(1,10).Select("{test:$%2}");
seq1.Except(seq2,"$.test").Select("$.test")</pre>
</td>
</tr>
<tr>
<td rowspan="2">
Intersect
</td>
<td rowspan="2">
JsonSql
</td>
<td>
T[] second
</td>
<td>
<pre>var array1 = [1,412,5,3,5,412,7];
var array2 = [20,12,5,5,7,310];
JsonSql.From(array1).Intersect(array2)</pre>
</td>
</tr>
<tr>
<td>
T[] second, T compareSelector(T)
</td>
<td>
<pre>var seq1 = JsonSql.Range(1,10).Select("{test:$%5}");
var seq2 = JsonSql.Range(1,10).Select("{test:$%2}");
seq1.Intersect(seq2,"$.test").Select("$.test")</pre>
</td>
</tr>
<tr>
<td rowspan="2">
SequenceEqual
</td>
<td rowspan="2">
Boolean
</td>
<td>
T[] second
</td>
<td>
<pre>JsonSql.Range(1,5).SequenceEqual(JsonSql.Range(1,5))</pre>
<pre>JsonSql.Range(1,5).SequenceEqual(JsonSql.Range(1,6))</pre>
</td>
</tr>
<tr>
<td>
T[] second, T compareSelector(T)
</td>
<td>
<pre>JsonSql.Range(1,10).Select("{test:$%5}")
.SequenceEqual(JsonSql.Range(1,10).Select("{test:$%5}"),"$.test")</pre>
</td>
</tr>
<tr>
<td rowspan="2">
Union
</td>
<td rowspan="2">
JsonSql
</td>
<td>
T[] second
</td>
<td>
<pre>var array1 = [1,412,5,3,5,412,7];
var array2 = [20,12,5,5,7,310];
JsonSql.From(array1).Union(array2)</pre>
</td>
</tr>
<tr>
<td>
T[] second, T compareSelector(T)
</td>
<td>
<pre>var seq1 = JsonSql.Range(1,5).Select("{test:$}");
var seq2 = JsonSql.Range(3,7).Select("{test:$}");
seq1.Union(seq2,"$.test").Select("$.test")</pre>
</td>
</tr>
</tbody>
</table>
<h2>
Ordering Methods</h2>
<table>
<thead>
<tr>
<td>
method name
</td>
<td>
return type
</td>
<td>
arguments
</td>
<td>
example (click code)
</td>
</tr>
</thead>
<tbody>
<tr>
<td rowspan="2">
OrderBy
</td>
<td rowspan="2">
OrderedEnumerable
</td>
<td>
()
</td>
<td>
<pre>
var array = [1,51,61,75,8,35,43];
JsonSql.From(array).OrderBy()</pre>
</td>
</tr>
<tr>
<td>
T keySelector(T)
</td>
<td>
<pre>
var array = [{a:"a"},{a:"z"},{a:"k"},{a:"l"},{a:"m"},{a:"c"}];
JsonSql.From(array).OrderBy("$.a").Select("$.a")</pre>
</td>
</tr>
<tr>
<td rowspan="2">
OrderByDescending
</td>
<td rowspan="2">
OrderedEnumerable
</td>
<td>
()
</td>
<td>
<pre>
var array = [1,51,61,75,8,35,43];
JsonSql.From(array).OrderByDescending()</pre>
</td>
</tr>
<tr>
<td>
T keySelector(T)
</td>
<td>
<pre>
var array = [{a:"a"},{a:"z"},{a:"k"},{a:"l"},{a:"m"},{a:"c"}];
JsonSql.From(array).OrderByDescending("$.a").Select("$.a")</pre>
</td>
</tr>
<tr>
<td>
ThenBy
</td>
<td>
OrderedEnumerable
</td>
<td>
T keySelector(T)
</td>
<td>
<pre>
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 }];
JsonSql.From(list).OrderBy("$.a").ThenBy("$.c").ThenBy("$.b")
.Select("$.a + ':' + $.b + ':' + $.c")</pre>
</td>
</tr>
<tr>
<td>
ThenByDescending
</td>
<td>
OrderedEnumerable
</td>
<td>
T keySelector(T)
</td>
<td>
<pre>
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 }];
JsonSql.From(list).OrderBy("$.a").ThenByDescending("$.c").ThenByDescending("$.b")
.Select("$.a + ':' + $.b + ':' + $.c")</pre>
</td>
</tr>
<tr>
<td>
Reverse
</td>
<td>
JsonSql
</td>
<td>
()
</td>
<td>
<pre>JsonSql.Range(1,10).Reverse()</pre>
</td>
</tr>
<tr>
<td>
Shuffle
</td>
<td>
JsonSql
</td>
<td>
()
</td>
<td>
<pre>JsonSql.Range(1,10).Shuffle()</pre>
</td>
</tr>
</tbody>
</table>
<h2>
Grouping Methods</h2>
<table>
<thead>
<tr>
<td>
method name
</td>
<td>
return type
</td>
<td>
arguments
</td>
<td>
example (click code)
</td>
</tr>
</thead>
<tbody>
<tr>
<td rowspan="4">
GroupBy
</td>
<td rowspan="2">
JsonSql<Grouping>
</td>
<td>
T keySelector(T)
</td>
<td>
<pre>JsonSql.Range(1,5).GroupBy("$%2==0")
.Select("$.Key() + ':' + $.ToString('-')")</pre>
</td>
</tr>
<tr>
<td>
T keySelector(T), T elementSelector(T)
</td>
<td>
<pre>JsonSql.Range(1,5).GroupBy("$%2==0","$*10")
.Select("$.Key() + ':' + $.ToString('-')")</pre>
</td>
</tr>
<tr>
<td rowspan="2">
JsonSql
</td>
<td>
T keySelector(T), T elementSelector(T), T resultSelector(T, JsonSql)
</td>
<td>
<pre>JsonSql.Range(1,5)
.GroupBy("$%2==0","","key,e=>key+':'+e.ToString('-')")</pre>
</td>
</tr>
<tr>
<td>
TK keySelector(T), TE elementSelector(T), TR resultSelector(T, JsonSql),TC compareSelector(TK)
</td>
<td>
<pre>JsonSql.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()")</pre>
</td>
</tr>
<tr>
<td rowspan="4">
PartitionBy
</td>
<td rowspan="2">
JsonSql<Grouping>
</td>
<td>
T keySelector(T)
</td>
<td>
<pre>JsonSql.From([1,2,2,3,3,2,1,1]).PartitionBy("i=>i")
.Select("$.Key() + ':' + $.ToString('-')")</pre>
</td>
</tr>
<tr>
<td>
T keySelector(T), T elementSelector(T)
</td>
<td>
<pre>JsonSql.From([1,2,2,3,3,2,1,1]).PartitionBy("i=>i","i=>i*100")
.Select("$.Key() + ':' + $.ToString('-')")</pre>
</td>
</tr>
<tr>
<td rowspan="2">
JsonSql
</td>
<td>
T keySelector(T), T elementSelector(T), T resultSelector(T, JsonSql)
</td>
<td>
<pre>JsonSql.From([1,2,2,3,3,2,1,1])
.PartitionBy("i=>i","i=>i","key,e=>key+':'+e.ToString('-')")</pre>
</td>
</tr>
<tr>
<td>
TK keySelector(T), TE elementSelector(T), TR resultSelector(T, JsonSql), TC compareSelector(TK)
</td>
<td>
<pre>JsonSql.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()")</pre>
</td>
</tr>
<tr>
<td>
BufferWithCount
</td>
<td>
JsonSql<Array>
</td>
<td>
int count
</td>
<td>
<pre>JsonSql.Range(1,10).BufferWithCount(4)</pre>
</td>
</tr>
</tbody>
</table>
<h2>
Aggregate Methods</h2>
<table>
<thead>
<tr>
<td>
method name
</td>
<td>
return type
</td>
<td>
arguments
</td>
<td>
example (click code)
</td>
</tr>
</thead>
<tbody>
<tr>
<td rowspan="3">
Aggregate
</td>
<td rowspan="3">
T
</td>
<td>
T func(T, T)
</td>
<td>
<pre>JsonSql.Range(1,5).Aggregate("a,b=>a*b")</pre>
</td>
</tr>
<tr>
<td>
T seed, T func(T, T)
</td>
<td>
<pre>JsonSql.Range(1,10).Aggregate(100,"a,b=>a+b")</pre>
</td>
</tr>
<tr>
<td>
T seed, T func(T, T), T resultSelector(T)
</td>
<td>
<pre>JsonSql.Range(1,10).Aggregate(100,"a,b=>a+b","$*10")</pre>
</td>
</tr>
<tr>
<td rowspan="2">
Average
</td>
<td rowspan="2">
Number
</td>
<td>
()
</td>
<td>
<pre>JsonSql.Range(1,10).Average()</pre>
</td>
</tr>
<tr>
<td>
Number selector(T)
</td>
<td>
<pre>JsonSql.From([{a:"foo",b:5},{a:"bar",b:20},{a:"foobar",b:10}])
.Average("$.b")</pre>
</td>
</tr>
<tr>
<td rowspan="2">
Count
</td>
<td rowspan="2">
Number
</td>
<td>
()
</td>
<td>
<pre>JsonSql.Range(1,10).Count()</pre>
</td>
</tr>
<tr>
<td>
bool predicate(T)
</td>
<td>
<pre>JsonSql.Range(1,10).Count("$>7")</pre>
</td>
</tr>
<tr>
<td rowspan="2">
Max
</td>
<td rowspan="2">
Number
</td>
<td>
()
</td>
<td>
<pre>JsonSql.Range(1,10).Max()</pre>
</td>
</tr>
<tr>
<td>
Number selector(T)
</td>
<td>
<pre>JsonSql.From([{a:"foo",b:5},{a:"bar",b:20},{a:"foobar",b:10}])
.Max("$.b")</pre>
</td>
</tr>
<tr>
<td rowspan="2">
Min
</td>
<td rowspan="2">
Number
</td>
<td>
()
</td>
<td>
<pre>JsonSql.Range(1,10).Min()</pre>
</td>
</tr>
<tr>
<td>
Number selector(T)
</td>
<td>
<pre>JsonSql.From([{a:"foo",b:5},{a:"bar",b:20},{a:"foobar",b:10}])
.Min("$.b")</pre>
</td>
</tr>
<tr>
<td>
MaxBy
</td>
<td>
T
</td>
<td>
Number selector(T)
</td>
<td>
<pre>JsonSql.From([{a:"foo",b:5},{a:"bar",b:20},{a:"foobar",b:10}])
.MaxBy("$.b").a</pre>
</td>
</tr>
<tr>
<td>
MinBy
</td>
<td>
T
</td>
<td>
Number selector(T)
</td>
<td>
<pre>JsonSql.From([{a:"foo",b:5},{a:"bar",b:20},{a:"foobar",b:10}])
.MinBy("$.b").a</pre>
</td>
</tr>
<tr>
<td rowspan="2">
Sum
</td>
<td rowspan="2">
Number
</td>
<td>
()
</td>
<td>
<pre>JsonSql.Range(1,10).Sum()</pre>
</td>
</tr>
<tr>
<td>
Number selector(T)
</td>
<td>
<pre>JsonSql.From([{a:"foo",b:5},{a:"bar",b:20},{a:"foobar",b:10}])
.Sum("$.b")</pre>
</td>
</tr>
</tbody>
</table>
<h2>
Paging Methods</h2>
<table>
<thead>
<tr>
<td>
method name
</td>
<td>
return type
</td>
<td>
arguments
</td>
<td>
example (click code)
</td>
</tr>
</thead>
<tbody>
<tr>
<td>
ElementAt
</td>
<td>
T
</td>
<td>
int index
</td>
<td>
<pre>JsonSql.Range(1,10).ElementAt(3)</pre>
</td>
</tr>
<tr>
<td>
ElementAtOrDefault
</td>
<td>
T
</td>
<td>
int index, T defaultValue
</td>
<td>
<pre>JsonSql.Range(1,10).ElementAtOrDefault(15,-1)</pre>
</td>
</tr>
<tr>
<td rowspan="2">
First
</td>
<td rowspan="2">
T
</td>
<td>
()
</td>
<td>
<pre>JsonSql.Range(1,10).First()</pre>
</td>
</tr>
<tr>
<td>
bool predicate(T)
</td>
<td>
<pre>JsonSql.Range(1,10).First("$>4")</pre>
</td>
</tr>
<tr>
<td rowspan="2">
FirstOrDefault
</td>
<td rowspan="2">
T
</td>
<td>
T defaultValue
</td>
<td>
<pre>JsonSql.Empty().FirstOrDefault(-1)</pre>
</td>
</tr>
<tr>
<td>
T defaultValue, bool predicate(T)
</td>
<td>
<pre>JsonSql.Range(1,10).FirstOrDefault(-1,"$>15")</pre>
</td>
</tr>
<tr>
<td rowspan="2">
Last
</td>
<td rowspan="2">
T
</td>
<td>
()
</td>
<td>
<pre>JsonSql.Range(1,10).Last()</pre>
</td>
</tr>
<tr>
<td>
bool predicate(T)
</td>
<td>
<pre>JsonSql.Range(1,10).Last("$<4")</pre>
</td>
</tr>
<tr>
<td rowspan="2">
LastOrDefault
</td>
<td rowspan="2">
T
</td>
<td>
T defaultValue
</td>
<td>
<pre>JsonSql.Empty().LastOrDefault(-1)</pre>
</td>
</tr>
<tr>
<td>
T defaultValue, bool predicate(T)
</td>
<td>
<pre>JsonSql.Range(1,10).LastOrDefault(-1,"$>15")</pre>
</td>
</tr>
<tr>
<td rowspan="2">
Single
</td>
<td rowspan="2">
T
</td>
<td>
()
</td>
<td>
<pre>JsonSql.From("a").Single()</pre>
</td>
</tr>
<tr>
<td>
bool predicate(T)
</td>
<td>
<pre>JsonSql.Range(1,10).Single("$==4")</pre>
</td>
</tr>
<tr>
<td rowspan="2">
SingleOrDefault
</td>
<td rowspan="2">
T
</td>
<td>
T defaultValue
</td>
<td>
<pre>JsonSql.Empty().SingleOrDefault(-1)</pre>
</td>
</tr>
<tr>
<td>
T defaultValue, bool predicate(T)
</td>
<td>
<pre>JsonSql.Range(1,10).SingleOrDefault(-1,"$==15")</pre>
</td>
</tr>
<tr>
<td>
Skip
</td>
<td>
JsonSql
</td>
<td>
int count
</td>
<td>
<pre>JsonSql.Range(1,10).Skip(5)</pre>
</td>
</tr>
<tr>
<td rowspan="2">
SkipWhile
</td>
<td rowspan="2">
JsonSql
</td>
<td>
bool predicate(T)
</td>
<td>
<pre>JsonSql.Range(1,10).SkipWhile("$<=5")</pre>
</td>
</tr>
<tr>
<td>
bool predicate(T, int index)
</td>
<td>
<pre>JsonSql.Range(1,10).SkipWhile("value,index=>value+index<=5")</pre>
</td>
</tr>
<tr>
<td>
Take
</td>
<td>
JsonSql
</td>
<td>
int count
</td>
<td>
<pre>JsonSql.Range(1,10).Take(5)</pre>
</td>
</tr>
<tr>
<td rowspan="2">
TakeWhile
</td>
<td rowspan="2">
JsonSql
</td>
<td>
bool predicate(T)
</td>
<td>
<pre>JsonSql.Range(1,10).TakeWhile("$<=5")</pre>
</td>
</tr>
<tr>
<td>
bool predicate(T, int index)
</td>
<td>
<pre>JsonSql.Range(1,10).TakeWhile("value,index=>value+index<=5")</pre>
</td>
</tr>
<tr>
<td rowspan="2">
TakeExceptLast
</td>
<td rowspan="2">
JsonSql
</td>
<td>
()
</td>
<td>
<pre>JsonSql.Range(1,10).TakeExceptLast()</pre>
</td>
</tr>
<tr>
<td>
Number count
</td>
<td>
<pre>JsonSql.Range(1,10).TakeExceptLast(3)</pre>
</td>
</tr>
<tr>
<td>
TakeFromLast
</td>
<td>
JsonSql
</td>
<td>
Number count
</td>
<td>
<pre>JsonSql.Range(1,10).TakeFromLast(3)</pre>
</td>
</tr>
<tr>
<td>
IndexOf
</td>
<td>
int
</td>
<td>
T item
</td>
<td>
<pre>JsonSql.Range(1,10).IndexOf(3)</pre>
<pre>JsonSql.Range(1,10).IndexOf(15)</pre>
</td>
</tr>
<tr>
<td>
LastIndexOf
</td>
<td>
int
</td>
<td>
T item
</td>
<td>
<pre>JsonSql.From([1,2,3,2,5]).LastIndexOf(2)</pre>
<pre>JsonSql.From([1,2,3,2,5]).LastIndexOf(20)</pre>
</td>
</tr>
</tbody>
</table>
<h2>
Convert Methods</h2>
<table>
<thead>
<tr>
<td>
method name
</td>
<td>
return type
</td>
<td>
arguments
</td>
<td>
example (click code)
</td>
</tr>
</thead>
<tbody>
<tr>
<td>
ToArray
</td>
<td>
Array
</td>
<td>
()
</td>
<td>
<pre>JsonSql.Range(1,10).ToArray()</pre>
</td>
</tr>
<tr>
<td rowspan="3">
ToLookup
</td>
<td rowspan="3">
Lookup
</td>
<td>
TKey keySelector(T)
</td>
<td>
<pre>var lookup = JsonSql.From(["temp.xls", "temp.pdf", "temp.jpg", "temp2.pdf"])
.ToLookup("$.match(/\\.(.+$)/)[1]");
lookup.ToEnumerable().Select("$.Key() + ' : ' + $.ToArray()")</pre>
</td>
</tr>
<tr>
<td>
TKey keySelector(T), TElement elementSelector(T)
</td>
<td>
<pre>var lookup = JsonSql.From(["temp.xls", "temp.pdf", "temp.jpg", "temp2.pdf"])
.ToLookup("$.match(/\\.(.+$)/)[1]","$.match(/(.+)\\.[^.]+$/)[1]");
lookup.ToEnumerable().Select("$.Key() + ' : ' + $.ToArray()")</pre>
</td>
</tr>
<tr>
<td>
TKey keySelector(T), TElement elementSelector(T), TCompare compareSelector(TKey)
</td>
<td>
<pre>var lookup = JsonSql.From(["temp.xls", "temp.pdf", "temp.jpg", "temp2.pdf"])
.ToLookup("","","$.match(/\\.(.+$)/)[1]");
lookup.ToEnumerable().Select("$.Key() + ' : ' + $.ToArray()")</pre>
</td>
</tr>
<tr>
<td>
ToObject
</td>
<td>
Object
</td>
<td>
String keySelector(T), T elementSelector(T)
</td>
<td>
<pre>var obj = JsonSql.Range(1,10).Select("value,index=>{id:'id_' + index,value:value}")
.ToObject("$.id","$.value");
JsonSql.From(obj).Select("$.Key + ':' + $.Value")</pre>
</td>
</tr>
<tr>
<td rowspan="2">
ToDictionary
</td>
<td rowspan="2">
Dictionary
</td>
<td>
TKey keySelector(T), TElement elementSelector(T)
</td>
<td>
<pre>var dict = JsonSql.Range(1,10).Select("value,index=>{id:'id_' + index,value:value}")
.ToDictionary("$.id","$.value");
dict.ToEnumerable().Select("$.Key + ':' + $.Value")</pre>
</td>
</tr>
<tr>
<td>
TKey keySelector(T), TElement elementSelector(T), TCompare compareSelector(TKey)
</td>
<td>
<pre>var dict = JsonSql.Range(1,10).Select("value,index=>{id:'id_' + index,value:value}")
.ToDictionary("$","$.value","$;id");
dict.ToEnumerable().Select("$.Key.id + ':' + $.Value")</pre>
</td>
</tr>
<tr>
<td rowspan="3">
ToJSON
</td>
<td rowspan="3">
String
</td>
<td>
()
</td>
<td>
<pre>// ToJSON only work Native JSON support browser or include json2.js
JsonSql.From([{Foo:1, Bar:'z'},{Foo:5, Bar:null}]).ToJSON()</pre>
</td>
</tr>
<tr>
<td>
TResult replacer(TKey, TValue)
</td>
<td>
<pre>JsonSql.From(["a","b","c"])
.ToJSON(function(k,v){return (typeof v === 'object') ? v : v.toString().toUpperCase()})</pre>
</td>
</tr>
<tr>
<td>
TResult replacer(TKey, TValue), Number space
</td>
<td>
<pre>JsonSql.Range(1, 5).ToJSON(null, 4)</pre>
</td>
</tr>
<tr>
<td rowspan="3">
ToString
</td>
<td rowspan="3">
String
</td>
<td>
()
</td>
<td>
<pre>JsonSql.Range(0,10).ToString()</pre>
</td>
</tr>
<tr>
<td>
String separator
</td>
<td>
<pre>JsonSql.Range(0,10).ToString("-")</pre>
</td>
</tr>
<tr>
<td>
String separator, T selector(T)
</td>
<td>
<pre>JsonSql.From([{k:"foo"},{k:"bar"}]).ToString("-","$.k")</pre>
</td>
</tr>
</tbody>
</table>
<h2>
Action Methods</h2>
<table>
<thead>
<tr>
<td>
method name
</td>
<td>
return type
</td>
<td>
arguments
</td>
<td>
example (click code)
</td>
</tr>
</thead>
<tbody>
<tr>
<td rowspan="2">
Do
</td>
<td rowspan="2">
JsonSql
</td>
<td>
void action(T)
</td>
<td>
<pre>JsonSql.Range(1,10).Do(function(i){
document.write('do:'+ i +'|');})
.Where("$%2==0")</pre>
</td>
</tr>
<tr>
<td>
void action(T, index)
</td>
<td>
<pre>JsonSql.Range(1,10).Do(function(value,index){
document.write("do:" + index + '-' + value + "<br/>");})
.OrderBy("").Take(2)</pre>
</td>
</tr>
<tr>
<td rowspan="4">
ForEach
</td>
<td rowspan="4">
void
</td>
<td>
void action(T)
</td>
<td>
<pre>JsonSql.Range(1,10).ForEach(function(i){
document.write(i);})</pre>
</td>
</tr>
<tr>
<td>
void action(T, index)
</td>
<td>
<pre>JsonSql.Range(1,10).ForEach(function(value,index){
document.write(index + ':' + value + "<br/>");})</pre>
</td>
</tr>
<tr>
<td>
bool func(T)
</td>
<td>
<pre>JsonSql.Range(1, 10).ForEach(function(i)
{
if (i % 2 == 0) return; // continue
if (i > 6) return false; // break
document.write(i + "<br/>");
})</pre>
</td>
</tr>
<tr>
<td>
bool func(T, index)
</td>
<td>
<pre>JsonSql.Repeat("aaa", 10).ForEach(function(s,index)
{
if (index % 2 == 0) return; // continue
if (index > 6) return false; // break
document.write(index + s + "<br/>");
})</pre>
</td>
</tr>
<tr>
<td rowspan="3">
Write
</td>
<td rowspan="3">
void
</td>
<td>
()
</td>
<td>
<pre>JsonSql.Range(1,10).Write()</pre>
</td>
</tr>
<tr>
<td>
String separator
</td>
<td>
<pre>JsonSql.Range(1,10).Write("-")</pre>
</td>
</tr>
<tr>
<td>
String separator, T selector(T)
</td>
<td>
<pre>JsonSql.From([{a:"foo",b:1},{a:"bar",b:3}])
.Write("-","$.a + ':' + $.b")</pre>
</td>
</tr>
<tr>
<td rowspan="2">
WriteLine
</td>
<td rowspan="2">
void
</td>
<td>
()
</td>
<td>
<pre>JsonSql.Range(1,10).WriteLine()</pre>
</td>
</tr>
<tr>
<td>
T selector(T)
</td>
<td>
<pre>JsonSql.From([{a:"foo",b:1},{a:"bar",b:3}])
.WriteLine("$.a + ':' + $.b")</pre>
</td>
</tr>
<tr>
<td>
Force
</td>
<td>
void
</td>
<td>
()
</td>
<td>
<pre>JsonSql.Range(1,10).Trace().Force()</pre>
</td>
</tr>
</tbody>
</table>
<h2>
Functional Methods</h2>
<table>
<thead>
<tr>
<td>
method name
</td>
<td>
return type
</td>
<td>
arguments
</td>
<td>
example (click code)
</td>
</tr>
</thead>
<tbody>
<tr>
<td>
Let
</td>
<td>
JsonSql
</td>
<td>
JsonSql<TR> func(JsonSql<T>)
</td>
<td>
<pre>JsonSql.Range(1,10).Let(function(x){return x.Zip(x.Skip(1),"x,y=>x + ':' + y")})</pre>
</td>
</tr>
<tr>
<td>
Share
</td>
<td>
JsonSql
</td>
<td>
()
</td>
<td>
<pre>var share = JsonSql.Range(1,10).Share();
share.Take(4).WriteLine();
document.write("--- <br>");
share.Skip(2)</pre>
</td>
</tr>
<tr>
<td>
MemoizeAll
</td>
<td>
JsonSql
</td>
<td>
()
</td>
<td>
<pre>var mem = JsonSql.Range(1,10)
.Do("document.write('--->' + $ + '<br>')").MemoizeAll();
mem.Where("$%2==0").WriteLine();
document.write("--- <br>");
mem.Where("$%2==0")</pre>
</td>
</tr>
</tbody>
</table>
<h2>
Error Handling Methods</h2>
<table>
<thead>
<tr>
<td>
method name
</td>
<td>
return type
</td>
<td>
arguments
</td>
<td>
example (click code)
</td>
</tr>
</thead>
<tbody>
<tr>
<td>
Catch
</td>
<td>
JsonSql
</td>
<td>
void handler(Error)
</td>
<td>
<pre>JsonSql.Range(1,10).Select(function(i){
if(i == 5) throw new Error("enumerable_error"); else return i;})
.Catch("document.write($.message)")</pre>
</td>
</tr>
<tr>
<td>
Finally
</td>
<td>
JsonSql
</td>
<td>
void finallyAction()
</td>
<td>
<pre>JsonSql.Range(1,5).Finally(function(){document.write("finally")})</pre>
</td>
</tr>
</tbody>
</table>
<h2>
For Debug Methods</h2>
<table>
<thead>
<tr>
<td>
method name
</td>
<td>
return type
</td>
<td>
arguments
</td>
<td>
example (click code)
</td>
</tr>
</thead>
<tbody>
<tr>
<td rowspan="3">
Trace
</td>
<td rowspan="3">
JsonSql
</td>
<td>
()
</td>
<td>
<pre>// Trace is output to console.log
JsonSql.Range(1,10).Trace().Force()</pre>
</td>
</tr>
<tr>
<td>
String message
</td>
<td>
<pre>JsonSql.Range(1,10).Trace("Gen").Where("$%3==0").Trace("Filtered").Force()</pre>
</td>
</tr>
<tr>
<td>
String message, T selector(T)
</td>
<td>
<pre>JsonSql.From([{a:"foo",b:1},{a:"bar",b:3}])
.Trace("Gen","$.a").Force()</pre>
</td>
</tr>
</tbody>
</table>
<h2>
IEnumerator</h2>
<table>
<thead>
<tr>
<td>
method name
</td>
<td>
return type
</td>
<td>
arguments
</td>
<td>
example (click code)
</td>
</tr>
</thead>
<tbody>
<tr>
<td>
GetEnumerator
</td>
<td>
IEnumerator
</td>
<td>
()
</td>
<td>
<pre>JsonSql.Range(1,10).GetEnumerator()</pre>
</td>
</tr>
<tr>
<td>
MoveNext
</td>
<td>
Boolean
</td>
<td>
()
</td>
<td>
<pre>JsonSql.Range(1,10).GetEnumerator().MoveNext()</pre>
</td>
</tr>
<tr>
<td>
Current
</td>
<td>
T
</td>
<td>
()
</td>
<td>
<pre>JsonSql.Range(1,10).GetEnumerator().Current()</pre>
</td>
</tr>
<tr>
<td>
Dispose
</td>
<td>
void
</td>
<td>
()
</td>
<td>
<pre>JsonSql.Range(1,10).GetEnumerator().Dispose()</pre>
</td>
</tr>
</tbody>
</table>
<h2>
Dictionary</h2>
<table>
<thead>
<tr>
<td>
method name
</td>
<td>
return type
</td>
<td>
arguments
</td>
<td>
example (click code)
</td>
</tr>
</thead>
<tbody>
<tr>
<td>
Add
</td>
<td>
void
</td>
<td>
TKey key, TValue value
</td>
<td>
<pre>JsonSql.Empty().ToDictionary().Add(1, 'aaa')</pre>
</td>
</tr>
<tr>
<td>
Get
</td>
<td>
TValue
</td>
<td>
TKey key
</td>
<td>
<pre>JsonSql.Empty().ToDictionary().Get(1)</pre>
</td>
</tr>
<tr>
<td>
Set
</td>
<td>
Boolean
</td>
<td>
TKey key, TValue value
</td>
<td>
<pre>JsonSql.Empty().ToDictionary().Set(1, 'zzz')</pre>
</td>
</tr>
<tr>
<td>
Contains
</td>
<td>
Boolean
</td>
<td>
TKey key
</td>
<td>
<pre>JsonSql.Empty().ToDictionary().Contains(1)</pre>
</td>
</tr>
<tr>
<td>
Clear
</td>
<td>
void
</td>
<td>
()
</td>
<td>
<pre>JsonSql.Empty().ToDictionary().Clear()</pre>
</td>
</tr>
<tr>
<td>
Remove
</td>
<td>
void
</td>
<td>
TKey key
</td>
<td>
<pre>JsonSql.Empty().ToDictionary().Remove(1)</pre>
</td>
</tr>
<tr>
<td>
Count
</td>
<td>
Number
</td>
<td>
()
</td>
<td>
<pre>JsonSql.Empty().ToDictionary().Count()</pre>
</td>
</tr>
<tr>
<td>
ToEnumerable
</td>
<td>
JsonSql
</td>
<td>
()
</td>
<td>
<pre>var dict = JsonSql.Empty().ToDictionary();
dict.Add("foo", 10); dict.Add("bar", 200);
dict.ToEnumerable().Select("$.Key + ':' + $.Value")</pre>
</td>
</tr>
</tbody>
</table>
<h2>
Lookup</h2>
<table>
<thead>
<tr>
<td>
method name
</td>
<td>
return type
</td>
<td>
arguments
</td>
<td>
example (click code)
</td>
</tr>
</thead>
<tbody>
<tr>
<td>
Get
</td>
<td>
JsonSql<TElement>
</td>
<td>
TKey key
</td>
<td>
<pre>JsonSql.From([{x:1,s:'a'},{x:1,s:'z'}])
.ToLookup("$.x").Get(1).Select("$.x + ':' + $.s")</pre>
</td>
</tr>
<tr>
<td>
Contains
</td>
<td>
Boolean
</td>
<td>
TKey key
</td>
<td>
<pre>JsonSql.From([{x:1,s:'a'},{x:1,s:'z'}])
.ToLookup("$.x").Contains(1)</pre>
</td>
</tr>
<tr>
<td>
Count
</td>
<td>
Number
</td>
<td>
()
</td>
<td>
<pre>JsonSql.Range(1,5).ToLookup().Count()</pre>
</td>
</tr>
<tr>
<td>
ToEnumerable
</td>
<td>
JsonSql<Grouping>
</td>
<td>
()
</td>
<td>
<pre>JsonSql.From([{a:1,s:'foo'},{a:1,s:'bar'},{a:2,s:'zzzzz'}])
.ToLookup("$.a").ToEnumerable()
.Select("$.Key() + ':' + $.Select('$.s').ToString('-')")</pre>
</td>
</tr>
</tbody>
</table>
<h2>
Grouping(inherit Eunmerable)</h2>
<table>
<thead>
<tr>
<td>
method name
</td>
<td>
return type
</td>
<td>
arguments
</td>
<td>
example (click code)
</td>
</tr>
<tr>
<td>
Key
</td>
<td>
TKey
</td>
<td>
()
</td>
<td>
<pre>JsonSql.From([{id:"foo",x:10},{id:"bar",x:20},{id:"foo",x:100}])
.GroupBy("$.id").ToArray()[0] // grouping
.Key()</pre>
</td>
</tr>
<tr>
<td>
All JsonSql Methods
</td>
<td>
-
</td>
<td>
-
</td>
<td>
<pre>var grouping = JsonSql.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")</pre>
</td>
</tr>
</thead>
</table>
<h2>
jQuery plugin</h2>
<table>
<thead>
<tr>
<td>
method name
</td>
<td>
return type
</td>
<td>
arguments
</td>
<td>
example (click code)
</td>
</tr>
</thead>
<tbody>
<tr>
<td>
TojQuery
</td>
<td>
jQuery
</td>
<td>
()
</td>
<td>
<pre>// JsonSql.Repeat("foo",10).TojQuery()</pre>
</td>
</tr>
<tr>
<td>
toEnumerable
</td>
<td>
JsonSql<jQuery>
</td>
<td>
()
</td>
<td>
<pre>// $("div").toEnumerable()</pre>
</td>
</tr>
</tbody>
</table>
<h2>
RxJS Binding</h2>
<table>
<thead>
<tr>
<td>
method name
</td>
<td>
return type
</td>
<td>
arguments
</td>
<td>
example (click code)
</td>
</tr>
</thead>
<tbody>
<tr>
<td>
ToObservable
</td>
<td>
Rx.Observable
</td>
<td>
()
</td>
<td>
<pre>// JsonSql.Range(1,10).ToObservable()</pre>
</td>
</tr>
<tr>
<td>
ToEnumerable
</td>
<td>
JsonSql
</td>
<td>
()
</td>
<td>
<pre>// Rx.Observable.Range(1,10).ToEnumerable()</pre>
</td>
</tr>
</tbody>
</table>
</body>
</html>
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。