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
JavaScriptとCollection
Kazuhiro Karino
 
PDF
120418 tokyo node5_lin_qonnodejs
Takayoshi Tanaka
 
PDF
非.NETerに向けたLINQの紹介
宏章 大橋
 
PDF
Linq To Fun
deflis
 
PDF
MlnagoyaRx
Shoichi Kakamu
 
PDF
MlnagoyaRx02
mega80b
 
PDF
VS勉強会 .NET Framework 入門
kamukiriri
 
PPTX
C#を始めたばかりの人へのLINQ to Objects
Fumitaka Yamada
 
PDF
Kanazawa.js.Next
dynamis
 
PPTX
20080201
小野 修司
 
PPTX
Boost17 cpplinq
miki_hirofumi
 
PDF
Final LINQ Extensions
Kouji Matsui
 
PDF
JavaScript.Next
dynamis
 
PPTX
LINQ 概要 + 結構便利な LINQ to XML
ShinichiAoyagi
 
PDF
LINQソースでGO!
Kouji Matsui
 
PPTX
LINQ概要
ShinichiAoyagi
 
PPTX
C# 3.0 以降
Fujio Kojima
 
PDF
これからのJavaScriptー関数型プログラミングとECMAScript6
TanUkkii
 
PPTX
C# 式木 (Expression Tree) ~ LINQをより深く理解するために ~
Fujio Kojima
 
PDF
UnityでのLINQ活用例
Ryota Murohoshi
 
JavaScriptとCollection
Kazuhiro Karino
 
120418 tokyo node5_lin_qonnodejs
Takayoshi Tanaka
 
非.NETerに向けたLINQの紹介
宏章 大橋
 
Linq To Fun
deflis
 
MlnagoyaRx
Shoichi Kakamu
 
MlnagoyaRx02
mega80b
 
VS勉強会 .NET Framework 入門
kamukiriri
 
C#を始めたばかりの人へのLINQ to Objects
Fumitaka Yamada
 
Kanazawa.js.Next
dynamis
 
20080201
小野 修司
 
Boost17 cpplinq
miki_hirofumi
 
Final LINQ Extensions
Kouji Matsui
 
JavaScript.Next
dynamis
 
LINQ 概要 + 結構便利な LINQ to XML
ShinichiAoyagi
 
LINQソースでGO!
Kouji Matsui
 
LINQ概要
ShinichiAoyagi
 
C# 3.0 以降
Fujio Kojima
 
これからのJavaScriptー関数型プログラミングとECMAScript6
TanUkkii
 
C# 式木 (Expression Tree) ~ LINQをより深く理解するために ~
Fujio Kojima
 
UnityでのLINQ活用例
Ryota Murohoshi
 
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 (9)

PDF
論文紹介:AutoPrompt: Eliciting Knowledge from Language Models with Automatically ...
Toru Tamaki
 
PDF
安尾 萌, 松下 光範. 環境馴致を計量可能にするための試み,人工知能学会第4回仕掛学研究会, 2018.
Matsushita Laboratory
 
PDF
SIG-AUDIO 2025 Vol.02 オンラインセミナー 「GDC2025 オーディオ報告会」SIG-Audio_GDC2025_報告会資料_渡辺さ...
IGDA Japan SIG-Audio
 
PDF
安尾 萌, 北村 茂生, 松下 光範. 災害発生時における被害状況把握を目的とした情報共有システムの基礎検討, 電子情報通信学会HCGシンポジウム2018...
Matsushita Laboratory
 
PDF
SIG-AUDIO 2025 Vol.02 オンラインセミナー 「GDC2025 オーディオ報告会」SIG-Audio_GDC2024_報告会資料_増野さ...
IGDA Japan SIG-Audio
 
PDF
安尾 萌, 藤代 裕之, 松下 光範. 協調的情報トリアージにおけるコミュニケーションの影響についての検討, 第11回データ工学と情報マネジメントに関する...
Matsushita Laboratory
 
PDF
API認可を支えるKeycloakの基本と設計の考え方 ~ OAuth/OIDCによるAPI保護のベストプラクティス ~
Hitachi, Ltd. OSS Solution Center.
 
PDF
マルチAIエージェントの産業界での実践に向けたオープンソース活動の展望 - Japan Regional User Group (RUG) Meet-Up
Kosaku Kimura
 
PDF
論文紹介:Unbiasing through Textual Descriptions: Mitigating Representation Bias i...
Toru Tamaki
 
論文紹介:AutoPrompt: Eliciting Knowledge from Language Models with Automatically ...
Toru Tamaki
 
安尾 萌, 松下 光範. 環境馴致を計量可能にするための試み,人工知能学会第4回仕掛学研究会, 2018.
Matsushita Laboratory
 
SIG-AUDIO 2025 Vol.02 オンラインセミナー 「GDC2025 オーディオ報告会」SIG-Audio_GDC2025_報告会資料_渡辺さ...
IGDA Japan SIG-Audio
 
安尾 萌, 北村 茂生, 松下 光範. 災害発生時における被害状況把握を目的とした情報共有システムの基礎検討, 電子情報通信学会HCGシンポジウム2018...
Matsushita Laboratory
 
SIG-AUDIO 2025 Vol.02 オンラインセミナー 「GDC2025 オーディオ報告会」SIG-Audio_GDC2024_報告会資料_増野さ...
IGDA Japan SIG-Audio
 
安尾 萌, 藤代 裕之, 松下 光範. 協調的情報トリアージにおけるコミュニケーションの影響についての検討, 第11回データ工学と情報マネジメントに関する...
Matsushita Laboratory
 
API認可を支えるKeycloakの基本と設計の考え方 ~ OAuth/OIDCによるAPI保護のベストプラクティス ~
Hitachi, Ltd. OSS Solution Center.
 
マルチAIエージェントの産業界での実践に向けたオープンソース活動の展望 - Japan Regional User Group (RUG) Meet-Up
Kosaku Kimura
 
論文紹介:Unbiasing through Textual Descriptions: Mitigating Representation Bias i...
Toru Tamaki
 

linq.js - Linq to Objects for JavaScript