SlideShare a Scribd company logo
linq.js
Linq to Objects for JavaScript

                  @neuecc - 2011/08/20
Profile
 Twitter: @neuecc
 HN : neuecc ("のいえ"と読ませています)

 Microsoft   MVP for C# LINQ

 Blog   : http://neue.cc/
     LINQとかReactive Extensions(Rx)のことがメイン

 CodePlexに色々ライブラリ公開しています
     単体テスト用拡張メソッド : Chaining Assertion
     dynamicを活用したJSONライブラリ : DynamicJson
     生SQL文ベースのDB用ヘルパー : DbExecutor
linq.js
LINQ to Objects
for JavaScript
Query Syntax
Method Syntax
C#
Enumerable.Range(1, 10)
  .Where(x => x % 2 == 0)
  .Select(x => x * x)
  .ToArray();


JavaScript(linq.js)
Enumerable.Range(1, 10)
  .Where(function (x) { return x % 2 == 0 })
  .Select(function (x) { return x * x })
  .ToArray();
完全に一致
JSなのにメソッドをUpperCamelCaseにしてまで一致させたのは後悔してますが……
メソッド構文、すなわち
jQueryなどでお馴染みの
メソッドチェーンは
JavaScriptのLanguageとして
INtegratedされているので
VSで書けばIntelliSenseが効
いてQueryが書きやすい
jQueryあるし……?
役割が違う
jQueryはDOM操作
linq.jsはコレクション操作
RIAが叫ばれる昨今では、クライアントサイドでの処理
も少なくない。データ処理が重要だが、素の状態の
JavaScriptはコレクション操作があまりにも貧弱(forルー
プしかない!←ES5からfilter,map,reduce,every,some,forEachは入りました)
・冗長なDOM操作APIの苦痛を和らげるjQuery
・貧弱なコレクション処理を補完するlinq.js
互いに競合しない、むしろ協調動作する
Features #1
 標準クエリ演算子の全てが使用可能
    JoinだってDistinctだってThenByだって何でもある
    挙動も完全再現してます(頑張った!)
    当然、遅延評価だよ?

 更に大量の謎拡張メソッドも
    ForEachとかCascadeDepthFirstとか
    UnfoldとかScanとかTakeExceptLastとか
    現在のところ全90メソッド

 DOM依存がないのでNode.jsやWSHでも動く
    WSH/JScriptの腐ったEnumeratorも殺害可能
Features #2
 jQueryプラグイン/拡張バインディング
    JavaScriptといったらDOM、DOMといったjQuery
    TojQueryとtoEnumerableでシームレスに連携

 簡易ラムダ記法
    .Where(function(x){ return x % 2 == 0 })
        長くてダルい
    .Where("x => x % 2 == 0")
        C#風のラムダ式を文字列渡しすることが可能、短い!
    .Where("$ % 2 == 0")
        デフォルトイテレータ変数で更に短く書ける
Features #3
 IntelliSense完全サポート
    vs-docもちゃんと完備してます
Features #4
 Reactive   Extensions for JavaScript(RxJS)との接続
     JavaScriptはEnumerableとObservableが両方そなわり
      最強に見える
     まあ、C#のほうがいいですけどね:)


 LINQ    to Everything, LINQ over the Language
     RxJSはすっかり更新されてなくてアレゲだけど
         更新待ってます
     linq.jsも最後の更新が半年ぐらい前なのですけど
         やるべきことは沢山たまっているのでやらないと……
利用者の声
 Linq  for Javascript + JQUERY == BLISS!
 It's a totally bloody loop-buster!!!
 A real time saver for JS intensive apps.
 Can't even imagine writing JavaScript without this
  library, linq.js together with jQuery makes life lot
  easier;)
 This library is an absolute requirement when doing
  any JS coding - webpages, mongodb, node.js etc.
  I've been using it for months and I can't live
  without it.
まとめ
 詳しくは@ITに記事を書いたので見てね
    JavaScriptで配列をLINQにより処理できるライブラリ
     「linq.js」を利用するには?
    jQueryと「linq.js」を連携させてDOMをLINQにより
     処理するには?

 ダウンロードはCodePlexから
    http://linqjs.codeplex.com/

 NuGetからも入れられます
    linq.js, linq.js-jQuery, linq.js-Binding

More Related Content

What's hot (20)

PDF
Observable Everywhere - Rxの原則とUniRxにみるデータソースの見つけ方
Yoshifumi Kawai
 
PDF
Introduction to NotifyPropertyChangedGenerator
Yoshifumi Kawai
 
PDF
The History of LINQ
Yoshifumi Kawai
 
PDF
The Usage and Patterns of MagicOnion
Yoshifumi Kawai
 
PDF
History & Practices for UniRx UniRxの歴史、或いは開発(中)タイトルの用例と落とし穴の回避法
Yoshifumi Kawai
 
PPTX
Rxに入門しようとしている
onotchi_
 
PDF
What, Why, How Create OSS Libraries - 過去に制作した30のライブラリから見るC#コーディングテクニックと個人OSSの...
Yoshifumi Kawai
 
PDF
A Framework for LightUp Applications of Grani
Yoshifumi Kawai
 
PDF
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
Yoshifumi Kawai
 
PDF
Implements OpenTelemetry Collector in DotNet
Yoshifumi Kawai
 
PPTX
UniRxことはじめ
Shoichi Yasui
 
PDF
C#の強み、或いは何故PHPから乗り換えるのか
Yoshifumi Kawai
 
PDF
RespClient - Minimal Redis Client for PowerShell
Yoshifumi Kawai
 
PPTX
C# 8.0 非同期ストリーム
信之 岩永
 
PDF
[Tokyo NodeFest 2015] Hardware Hacking for Javascript Developers
Tomomi Imura
 
PDF
LINQ in Unity
Yoshifumi Kawai
 
PDF
20140329 modern logging and data analysis pattern on .NET
Takayoshi Tanaka
 
PDF
ADO.NETとORMとMicro-ORM -dapper dot netを使ってみた
Narami Kiyokura
 
PDF
UniRx - Reactive Extensions for Unity
Yoshifumi Kawai
 
PDF
LINQPad with LINQ to BigQuery - Desktop Client for BigQuery
Yoshifumi Kawai
 
Observable Everywhere - Rxの原則とUniRxにみるデータソースの見つけ方
Yoshifumi Kawai
 
Introduction to NotifyPropertyChangedGenerator
Yoshifumi Kawai
 
The History of LINQ
Yoshifumi Kawai
 
The Usage and Patterns of MagicOnion
Yoshifumi Kawai
 
History & Practices for UniRx UniRxの歴史、或いは開発(中)タイトルの用例と落とし穴の回避法
Yoshifumi Kawai
 
Rxに入門しようとしている
onotchi_
 
What, Why, How Create OSS Libraries - 過去に制作した30のライブラリから見るC#コーディングテクニックと個人OSSの...
Yoshifumi Kawai
 
A Framework for LightUp Applications of Grani
Yoshifumi Kawai
 
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
Yoshifumi Kawai
 
Implements OpenTelemetry Collector in DotNet
Yoshifumi Kawai
 
UniRxことはじめ
Shoichi Yasui
 
C#の強み、或いは何故PHPから乗り換えるのか
Yoshifumi Kawai
 
RespClient - Minimal Redis Client for PowerShell
Yoshifumi Kawai
 
C# 8.0 非同期ストリーム
信之 岩永
 
[Tokyo NodeFest 2015] Hardware Hacking for Javascript Developers
Tomomi Imura
 
LINQ in Unity
Yoshifumi Kawai
 
20140329 modern logging and data analysis pattern on .NET
Takayoshi Tanaka
 
ADO.NETとORMとMicro-ORM -dapper dot netを使ってみた
Narami Kiyokura
 
UniRx - Reactive Extensions for Unity
Yoshifumi Kawai
 
LINQPad with LINQ to BigQuery - Desktop Client for BigQuery
Yoshifumi Kawai
 

Viewers also liked (13)

PPTX
linq.js ver.3 and JavaScript in Visual Studio 2012
Yoshifumi Kawai
 
PDF
Photon Server Deep Dive - View from Implmentation of PhotonWire, Multiplayer ...
Yoshifumi Kawai
 
PDF
How to make the Fastest C# Serializer, In the case of ZeroFormatter
Yoshifumi Kawai
 
PDF
History & Practices for UniRx(EN)
Yoshifumi Kawai
 
PPTX
RuntimeUnitTestToolkit for Unity(English)
Yoshifumi Kawai
 
PDF
ZeroFormatter/MagicOnion - Fastest C# Serializer/gRPC based C# RPC
Yoshifumi Kawai
 
PPTX
Clash of Oni Online - VR Multiplay Sword Action
Yoshifumi Kawai
 
PDF
Photon Server Deep Dive - PhotonWireの実装から見つめるPhotonServerの基礎と応用
Yoshifumi Kawai
 
PDF
Binary Reading in C#
Yoshifumi Kawai
 
PDF
ZeroFormatterに見るC#で最速のシリアライザを作成する100億の方法
Yoshifumi Kawai
 
PDF
NextGen Server/Client Architecture - gRPC + Unity + C#
Yoshifumi Kawai
 
PPTX
RuntimeUnitTestToolkit for Unity
Yoshifumi Kawai
 
PDF
「黒騎士と白の魔王」gRPCによるHTTP/2 - API, Streamingの実践
Yoshifumi Kawai
 
linq.js ver.3 and JavaScript in Visual Studio 2012
Yoshifumi Kawai
 
Photon Server Deep Dive - View from Implmentation of PhotonWire, Multiplayer ...
Yoshifumi Kawai
 
How to make the Fastest C# Serializer, In the case of ZeroFormatter
Yoshifumi Kawai
 
History & Practices for UniRx(EN)
Yoshifumi Kawai
 
RuntimeUnitTestToolkit for Unity(English)
Yoshifumi Kawai
 
ZeroFormatter/MagicOnion - Fastest C# Serializer/gRPC based C# RPC
Yoshifumi Kawai
 
Clash of Oni Online - VR Multiplay Sword Action
Yoshifumi Kawai
 
Photon Server Deep Dive - PhotonWireの実装から見つめるPhotonServerの基礎と応用
Yoshifumi Kawai
 
Binary Reading in C#
Yoshifumi Kawai
 
ZeroFormatterに見るC#で最速のシリアライザを作成する100億の方法
Yoshifumi Kawai
 
NextGen Server/Client Architecture - gRPC + Unity + C#
Yoshifumi Kawai
 
RuntimeUnitTestToolkit for Unity
Yoshifumi Kawai
 
「黒騎士と白の魔王」gRPCによるHTTP/2 - API, Streamingの実践
Yoshifumi Kawai
 
Ad

Similar to linq.js - Linq to Objects for JavaScript (20)

PDF
MlnagoyaRx
Shoichi Kakamu
 
PDF
Reactive Extensions v2.0
Yoshifumi Kawai
 
PDF
SQLQL は GraphQL にとってなんなのか
yancya
 
PPT
Handlersocket etc. 20110906
akirahiguchi
 
PDF
Redux, Relay, HorizonあるいはElm
chuck h
 
PDF
プロジェクト2B 最終発表
Kodai Takao
 
PDF
serverless
Akira Otsuka
 
PPTX
LINQ 概要 + 結構便利な LINQ to XML
ShinichiAoyagi
 
PDF
C#次世代非同期処理概観 - Task vs Reactive Extensions
Yoshifumi Kawai
 
PPT
やってみよう!ASP.NET MVC #2
Tadahiro Higuchi
 
PPTX
Elixir入門「第3回:Phoenix 1.3で高速webアプリ & REST APIアプリをサクッと書いてみる」
fukuoka.ex
 
PDF
Visual Studio Codeで始めるTypeScript
Akira Inoue
 
PPTX
キャッチアップJavaScriptビルド - ビルドから見るJSの今/2016春
Kondo Hitoshi
 
PDF
Visual Studio 2012 Web 開発 ~ One ASP.NET から TypeScript まで ~
Akira Inoue
 
PDF
Nginx
Soichi Takamura
 
PPTX
React and-rx
Taketoshi 青野健利
 
PDF
ATN No.2 Scala事始め
AdvancedTechNight
 
PPTX
React + Reduxで作る対話AI
Kentaro Tada
 
PPTX
Rails×React×TS で作るwebアプリ入門【weseek tech conf #10】
WESEEKWESEEK
 
PDF
Isomorphic web development with scala and scala.js
TanUkkii
 
MlnagoyaRx
Shoichi Kakamu
 
Reactive Extensions v2.0
Yoshifumi Kawai
 
SQLQL は GraphQL にとってなんなのか
yancya
 
Handlersocket etc. 20110906
akirahiguchi
 
Redux, Relay, HorizonあるいはElm
chuck h
 
プロジェクト2B 最終発表
Kodai Takao
 
serverless
Akira Otsuka
 
LINQ 概要 + 結構便利な LINQ to XML
ShinichiAoyagi
 
C#次世代非同期処理概観 - Task vs Reactive Extensions
Yoshifumi Kawai
 
やってみよう!ASP.NET MVC #2
Tadahiro Higuchi
 
Elixir入門「第3回:Phoenix 1.3で高速webアプリ & REST APIアプリをサクッと書いてみる」
fukuoka.ex
 
Visual Studio Codeで始めるTypeScript
Akira Inoue
 
キャッチアップJavaScriptビルド - ビルドから見るJSの今/2016春
Kondo Hitoshi
 
Visual Studio 2012 Web 開発 ~ One ASP.NET から TypeScript まで ~
Akira Inoue
 
ATN No.2 Scala事始め
AdvancedTechNight
 
React + Reduxで作る対話AI
Kentaro Tada
 
Rails×React×TS で作るwebアプリ入門【weseek tech conf #10】
WESEEKWESEEK
 
Isomorphic web development with scala and scala.js
TanUkkii
 
Ad

More from Yoshifumi Kawai (10)

PDF
A quick tour of the Cysharp OSS
Yoshifumi Kawai
 
PDF
A Brief History of UniRx/UniTask, IUniTaskSource in Depth
Yoshifumi Kawai
 
PDF
Building the Game Server both API and Realtime via c#
Yoshifumi Kawai
 
PDF
ライブラリ作成のすゝめ - 事例から見る個人OSS開発の効能
Yoshifumi Kawai
 
PDF
Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現
Yoshifumi Kawai
 
PDF
Unity C#と.NET Core(MagicOnion) C# そしてKotlinによるハーモニー
Yoshifumi Kawai
 
PDF
Deep Dive async/await in Unity with UniTask(EN)
Yoshifumi Kawai
 
PDF
True Cloud Native Batch Workflow for .NET with MicroBatchFramework
Yoshifumi Kawai
 
PDF
Memory Management of C# with Unity Native Collections
Yoshifumi Kawai
 
PDF
Deep Dive async/await in Unity with UniTask(UniRx.Async)
Yoshifumi Kawai
 
A quick tour of the Cysharp OSS
Yoshifumi Kawai
 
A Brief History of UniRx/UniTask, IUniTaskSource in Depth
Yoshifumi Kawai
 
Building the Game Server both API and Realtime via c#
Yoshifumi Kawai
 
ライブラリ作成のすゝめ - 事例から見る個人OSS開発の効能
Yoshifumi Kawai
 
Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現
Yoshifumi Kawai
 
Unity C#と.NET Core(MagicOnion) C# そしてKotlinによるハーモニー
Yoshifumi Kawai
 
Deep Dive async/await in Unity with UniTask(EN)
Yoshifumi Kawai
 
True Cloud Native Batch Workflow for .NET with MicroBatchFramework
Yoshifumi Kawai
 
Memory Management of C# with Unity Native Collections
Yoshifumi Kawai
 
Deep Dive async/await in Unity with UniTask(UniRx.Async)
Yoshifumi Kawai
 

Recently uploaded (8)

PDF
Hyperledger Fabric最新v3.x系での機能強化、変更点にキャッチアップ!
LFDT Tokyo Meetup
 
PDF
Hyperledger Fabric公式サンプル fabric-samples徹底解説
LFDT Tokyo Meetup
 
PDF
[Hardening Designers Confernece 2025]ランサムウェアでの見えざるログ・見えるログ
kataware
 
PDF
PostgreSQL18新機能紹介(db tech showcase 2025 発表資料)
NTT DATA Technology & Innovation
 
PDF
20250710_Devinで切り拓くDB革命_〜価値創出に集中せよ〜.pdf
Masaki Yamakawa
 
PDF
プライバシ保護のためのインターネットアーキテクチャの進化 (2025-07-11)
Jun Kurihara
 
PDF
人気ブロックチェーン基盤「Hyperledger Fabric」最新版を動かしてみた!
LFDT Tokyo Meetup
 
PDF
20250711_日本IBM ミドルウエア・ユーザー研究会(JIMUC)総会_中村会長資料.pdf
ChikakoInami1
 
Hyperledger Fabric最新v3.x系での機能強化、変更点にキャッチアップ!
LFDT Tokyo Meetup
 
Hyperledger Fabric公式サンプル fabric-samples徹底解説
LFDT Tokyo Meetup
 
[Hardening Designers Confernece 2025]ランサムウェアでの見えざるログ・見えるログ
kataware
 
PostgreSQL18新機能紹介(db tech showcase 2025 発表資料)
NTT DATA Technology & Innovation
 
20250710_Devinで切り拓くDB革命_〜価値創出に集中せよ〜.pdf
Masaki Yamakawa
 
プライバシ保護のためのインターネットアーキテクチャの進化 (2025-07-11)
Jun Kurihara
 
人気ブロックチェーン基盤「Hyperledger Fabric」最新版を動かしてみた!
LFDT Tokyo Meetup
 
20250711_日本IBM ミドルウエア・ユーザー研究会(JIMUC)総会_中村会長資料.pdf
ChikakoInami1
 

linq.js - Linq to Objects for JavaScript