分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 代码编程

linqjs

发布时间:2023-09-06 01:46责任编辑:董明明关键词:js

Project Description
linq.js - LINQ for JavaScript

Features

  • implement all .NET 4.0 methods and many extra methods (inspiration from Rx, Achiral, Haskell, Ruby, etc...)
  • complete lazy evaluation
  • full IntelliSense support for VisualStudio
  • two versions - linq.js and jquery.linq.js (jQuery plugin)
  • support Windows Script Host
  • binding for Reactive Extensions for JavaScript(RxJS) and IntelliSense Generator -> see documentation
  • NuGet install support(linq.js, linq.js-jQuery, linq.js-Bindings)


90 Methods

Aggregate, All, Alternate, Any, Average, BufferWithCount, CascadeBreadthFirst, CascadeDepthFirst, Catch, Choice, Concat,
Contains, Count, Cycle, DefaultIfEmpty, Distinct, Do, ElementAt, ElementAtOrDefault, Empty, Except, Finally, First, FirstOrDefault, 
Flatten, ForEach, Force, From, Generate, GetEnumerator, GroupBy, GroupJoin, IndexOf, Insert, Intersect, Join, Last, LastIndexOf,
LastOrDefault, Let, Matches, Max, MaxBy, MemoizeAll, Min, MinBy, OfType, OrderBy, OrderByDescending, Pairwise, PartitionBy, 
Range, RangeDown, RangeTo, Repeat, RepeatWithFinalize, Return, Reverse, Scan, Select, SelectMany, SequenceEqual, Share, Shuffle,
Single, SingleOrDefault, Skip, SkipWhile, Sum, Take, TakeExceptLast, TakeFromLast, TakeWhile, ThenBy, ThenByDescending, ToArray,
ToDictionary, ToInfinity,ToJSON, ToLookup, ToNegativeInfinity, ToObject, ToString, Trace, Unfold, Union, Where, Write, WriteLine, Zip

  • see details - linq.js Reference & LINQPad

Starting linq.js ver.3.0.0-beta!(2012/07/19)

Get the ver.3.0.4-Beta5 @2013/06/20
or NuGet Install-Package linq.js -Pre, linq.js-jQuery -Pre, linq.js-RxJS -Pre, linq.js-QUnit -Pre
Now TypeScript Generics(0.9) support!

Please try it! and give me a feedback!
http://linqjs.codeplex.com/discussions/376207

Query objects or json

  • sample from http://twitter.com/statuses/public_timeline.json
var jsonArray = [ ???{ "user": { "id": 100, "screen_name": "d_linq" }, "text": "to objects" }, ???{ "user": { "id": 130, "screen_name": "c_bill" }, "text": "g" }, ???{ "user": { "id": 155, "screen_name": "b_mskk" }, "text": "kabushiki kaisha" }, ???{ "user": { "id": 301, "screen_name": "a_xbox" }, "text": "halo reach" }]// ["b_mskk:kabushiki kaisha", "c_bill:g", "d_linq:to objects"]var queryResult = Enumerable.From(jsonArray) ???.Where(function (x) { return x.user.id < 200 }) ???.OrderBy(function (x) { return x.user.screen_name }) ???.Select(function (x) { return x.user.screen_name + ‘:‘ + x.text }) ???.ToArray();// shortcut! string lambda selectorvar queryResult2 = Enumerable.From(jsonArray) ???.Where("$.user.id < 200") ???.OrderBy("$.user.screen_name") ???.Select("$.user.screen_name + ‘:‘ + $.text") ???.ToArray();

High compatibility with C# Linq

// C# LINQ (delegate)Enumerable.Range(1, 10) ???.Where(delegate(int i) { return i % 3 == 0; }) ???.Select(delegate(int i) { return i * 10; });// linq.js - anonymous functionEnumerable.Range(1, 10) ???.Where(function(i) { return i % 3 == 0; }) ???.Select(function(i) { return i * 10; });// C# LINQ (lambda)Enumerable.Range(1, 10).Where(i => i % 3 == 0).Select(i => i * 10);// linq.js - lambda expressionEnumerable.Range(1, 10).Where("i => i % 3 == 0").Select("i => i * 10");// $ is default iterator variable like Scala‘s "_" or Groovy‘s "it"Enumerable.Range(1, 10).Where("$ % 3 == 0").Select("$ * 10"); // "" is shorthand of "x => x" (identity function)Enumerable.Range(4, 7).Join(Enumerable.Range(8, 5), "", "", "outer,inner=>outer*inner");// Enumerable.From is wrap from primitive array, string(to charArray), object(to KeyValuePair[]) etc..var array = [100, 200, 30, 40, 500, 40, 200];var ex1 = Enumerable.From(array).Distinct().ToArray(); // [100, 200, 30, 40, 500]var ex2 = Enumerable.From("foobar").ToArray(); // ["f", "o", "o", "b", "a", "r"];var ex3 = Enumerable.From({foo:10, bar:20}).ToArray(); // [{Key:"foo",Value:10}, {Key:"bar",Value:20}]// C# - AnonymousTypearray.Select((val, i) => new { Value = val, Index = i });// linq.js - object literalEnumerable.From(array).Select("val,i=>{Value:val, Index:i}")

jQuery plugin version

// $.Enumerable$.Enumerable.Range(1, 10).Where("$%2==0").ForEach("alert($)");// TojQuery - Enumerable to jQuery$.Enumerable.Range(1, 10) ???.Select(function (i) { return $("<option>").text(i)[0] }) ???.TojQuery() ???.appendTo("#select1");// toEnumerable - jQuery to Enumerablevar sum = $("#select1").children() ???.toEnumerable() ???.Select("parseInt($.text())") ???.Sum(); // 55


IntelliSense vsdoc



video - using with Visual Studio 2010


Launch in another window



video - how to debug linq.js


Launch in another window

with Windows Script Host

// get folder name and file name...var dir = WScript.CreateObject("Scripting.FileSystemObject").GetFolder("C:\\"); // normallyvar itemNames = [];for (var e = new Enumerator(dir.SubFolders); !e.atEnd(); e.moveNext()){ ???itemNames.push(e.item().Name);}for (var e = new Enumerator(dir.Files); !e.atEnd(); e.moveNext()){ ???itemNames.push(e.item().Name);}// linq.jsvar itemNames2 = Enumerable.From(dir.SubFolders).Concat(dir.Files).Select("$.Name").ToArray();
原文链接:https://archive.codeplex.com/?p=linqjs

linqjs

原文地址:https://www.cnblogs.com/coce/p/8644123.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved