1 Star 0 Fork 41

nar142857/JsonSql.js

forked from @HuangBingGui/JsonSql.js 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
JsonSql例子.html 86.72 KB
一键复制 编辑 原始数据 按行查看 历史
@HuangBingGui 提交于 2020-03-23 15:31 . -
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002
<!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&lt;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&lt;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&lt;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 + "&lt;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 + "&lt;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 + "&lt;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 + "&lt;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&lt;TR> func(JsonSql&lt;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("--- &lt;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('--->' + $ + '&lt;br>')").MemoizeAll();
mem.Where("$%2==0").WriteLine();
document.write("--- &lt;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&lt;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&lt;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&lt;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>
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
JavaScript
1
https://gitee.com/narc/JsonSql.git
git@gitee.com:narc/JsonSql.git
narc
JsonSql
JsonSql.js
master

搜索帮助

0d507c66 1850385 C8b1a773 1850385