非.NETerに向けたLINQの紹介2. Profile
• LAMPな会社に迷い込んだ.C#er
• Twitter:@nal_6295
• http://blog.nal-6295.biz
12年7月21日土曜日
3. Agenda
• LINQって何?
• LINQ が扱えるものって何?
• LINQでコレクションを操作
• LINQで複数のコレクションを操作
• LINQ to X
• .NET以外のLINQ実装って無いわけ?
12年7月21日土曜日
4. LINQって何?
聞く前に「LINQ」を検索条件にbingれ
12年7月21日土曜日
7. LINQって何?
• LINQはLanguage INtegrated Queryの略称
でSQLみたいな問い合わせ構文を言語
に取り込んだもの
• 日本語では「統合言語クエリ」
12年7月21日土曜日
8. LINQが扱えるものって何?
• 主に以下の3つが基本
• コレクション(List、DictionaryなどIEnumerableを実装しているもの)
を扱う事が可能 (LINQ to Object)
• XML(System.XML.XPath名前空間を利用)を扱う事が可能(LINQ to
XML)
• RDBを扱う事が可能(LINQ to SQL,LINQ to EF)
• Reactive Extentionsというプラグインを入れるとIObservableを実装して
いるものもLINQで扱えるようになり、時間軸やイベントなども操作
できるようになる。
12年7月21日土曜日
9. LINQでコレクションを操作
以下のように用意しておいた在庫のリストの
中から数量が10より大きくて、30で割った
時の余りが無いものを抽出して出力します。
12年7月21日土曜日
12. LINQで複数のコレクションを操作
以下のように用意しておいた在庫のリスト
と商品のリストを結合して、商品番号、商
品名、数量、LOTNOを出力します。
12年7月21日土曜日
16. まずはLINQを使わないで
その場で出力しているから良いものの、新しいコレクションを作ってそれを
使って処理をするような場合、もう少しめんどくさいコードに・・・
12年7月21日土曜日
18. LINQで書くと・・・
• 消失するループ
• 消失するネスト
• 問い合わせの定義と、問い合わせ結果
を利用するコードの分離
• 常にタイプセーフ
12年7月21日土曜日
19. LINQ to X
• LINQが扱えるものは実は拡張可能
• LINQ to Oracle,LINQ to WMI,LINQ to
Active Directory,LINQ to Twitter,LINQ to
mongoDB等々・・・いろんな拡張が実装
されている
• Query Providerを実装する事で拡張できる
12年7月21日土曜日
21. .NET以外のLINQ実装ってないわけ?
• linq.js
• JavaScriptでLINQによるコレクション操作が
可能です。
• http://linqjs.codeplex.com/
• PHPLinq
• PHPにもLINQの実装がありました。
• http://phplinq.codeplex.com/
12年7月21日土曜日
22. まとめ
C#erもJSerもPHPerも楽しいLINQ生活を
送りましょう。
12年7月21日土曜日