業務に役立つちょいLINQ
        まさる@わんくま同盟
 http://blogs.wankuma.com/masaru/




    わんくま同盟 http://www.wankuma.com/
自己紹介

• ハンドル まさる
• 性別   見ての通り♂
• 職業   SE兼プログラマ
       (業務ではVB、趣味ではC#がメイン)
• 趣味
  – 楽器演奏   バスクラリネット
  – 読書
  • 小説
  • 技術書
 ...
詳しくは…




まさるblogでググってくださいませ
        <(_ _)>




   わんくま同盟 http://www.wankuma.com/
今日は・・・



昨年リリースされた.NET Framework 3.5
  その目玉機能であるLINQですが、
      新たな概念のため
    有効に活用されていません

そんなLINQを実例を交えて紹介します


      わんく...
なお・・・




今回はC#の例を紹介します!

 VBでもそんなに変わらないので
   気後れしなくていいですよ
       v(^ ^)v



   わんくま同盟 http://www.wankuma.com/
Agenda

• LINQとは?
• LINQの基本
• 便利なLINQ




       わんくま同盟 http://www.wankuma.com/
LINQとは?




わんくま同盟 http://www.wankuma.com/
LINQとは?

• LINQ (Language Integrated Query)
  日本語訳:統合言語クエリ
  – C#、VBなどのプログラミング言語に統合され
    た、あらゆるデータを同様の構文で問い合わ
    せ(クエリ)を...
LINQとは?

• LINQの機能
 – 様々なデータ集合に対して、以下のような操
   作を行う
   • フィルタリング
   • 列挙
   • 射影
   • etc…




       わんくま同盟 http://www.wan...
LINQとは?

• LINQの種類
 –   LINQ to Object
 –   LINQ to DataSet
 –   LINQ to XML
 –   LINQ to SQL
 –   LINQ to Entity




    ...
LINQとは?

• LINQ to Object
  – 様々なコレクションの変数に対するクエリ
    • 配列、リスト、など
  – 具体的には、IEnumerable<T>インターフェイ
    スを実装する型ならなんでも可能

   ...
LINQの基本




わんくま同盟 http://www.wankuma.com/
LINQの基本

• クエリ構文
  – SQLのようなクエリ式でデータを操作
int[] values = { 1, 2, 3, 4, 5 };
var q = from value in values
        where value...
LINQの基本

• クエリ構文
 – 実行結果




      わんくま同盟 http://www.wankuma.com/
LINQの基本

• メソッド構文
  – メソッドチェーンでクエリを構築
int[] values = { 1, 2, 3, 4, 5 };
var q = from values.Where(value => value < 4)
  .S...
LINQの基本

• メソッド構文
 – WhereメソッドやSelectメソッドの正体は、
   System.Linq名前空間に定義された、
   IEnumerable<T>の拡張メソッド
 – クエリ式はこのメソッド構文のSyntax ...
LINQの基本

• クエリ構文とメソッド構文の使い分け
 – クエリ構文
  • 条件指定、並べ替えなど複合的に行う場合
  • 1つの条件でフィルタリングするだけなら、メ
    ソッド構文の方が単純


 – メソッド構文
  • 単一の...
LINQの基本

• クエリ構文とメソッド構文の使い分け
var q = from value in values
        where value < 4 & value % 3 == 0
        orderby value d...
LINQの基本

• クエリ構文とメソッド構文の使い分け
var q = from value in values
        where value < 4
        select value
        ;


var q =...
LINQの基本

• LINQで気を付けること
 – LINQの中身はあくまで値の列挙とその操作、
   つまりforeach
 – あまり使いすぎるとパフォーマンス悪化の可
   能性


      用法、用量を守って
     正しくお使...
便利なLINQ




わんくま同盟 http://www.wankuma.com/
便利なLINQ

• Whereメソッド
   – コレクションのフィルタリングを行う
var values = Enumerable.Range(1, 20);

var q = values.Where(value => value % 3...
便利なLINQ

• Any、Allメソッド
   – コレクションの項目のいずれか(Any)、もし
     くは全て(All)が条件を満たすか判定
string[] values = { quot;hogequot;, quot;foo“
...
便利なLINQ

• Sum、Average、Max、Minメソッド
      – コレクションの値の総和(Sum)、平均
        (Average)、最大値(Max)、最小値
        (Min)を求める
var values...
便利なLINQ

• OrdayBy、OrderByDescendingメソッド
   – コレクションを並び替えて取得する
var values = new Person[] {
  new Person{ Name=quot;Taroquo...
便利なLINQ

• Reverseメソッド
   – コレクションを逆順に取得する
var values = Enumerable.Range(1, 20);

var reverseValues = values.Reverse();


...
便利なLINQ

• GroupByメソッド
   – コレクションをグルーピングする
var values = new Sales[] { new Sales { ProductId = 1
   , SalesQty = 10 }, ~ }...
便利なLINQ

• ToArray、ToList、To~メソッド
   – コレクションをTo~で指定された型に変換す
     る
var values = Enumerable.Range(1, 20);

List<int> intLi...
まとめ




わんくま同盟 http://www.wankuma.com/
まとめ

• LINQにはクエリ構文、メソッド構文があり、
  適宜使い分ける
• LINQの中身はforeach
• LINQを使うことで、従来よりも遥かに短い
  コードで、しかもわかりやすくコレクショ
  ンを扱える

     そして何...
LINQ 超便利!
ぜひ使うべき!

 わんくま同盟 http://www.wankuma.com/
おしまい!

ご静聴ありがとうございました
      <(_ _)>



 わんくま同盟 http://www.wankuma.com/
Upcoming SlideShare
Loading in...5
×

Choi LINQ

2,126

Published on

0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
2,126
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
10
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Choi LINQ

  1. 1. 業務に役立つちょいLINQ まさる@わんくま同盟 http://blogs.wankuma.com/masaru/ わんくま同盟 http://www.wankuma.com/
  2. 2. 自己紹介 • ハンドル まさる • 性別 見ての通り♂ • 職業 SE兼プログラマ (業務ではVB、趣味ではC#がメイン) • 趣味 – 楽器演奏 バスクラリネット – 読書 • 小説 • 技術書 • ビジネス書 わんくま同盟 http://www.wankuma.com/
  3. 3. 詳しくは… まさるblogでググってくださいませ <(_ _)> わんくま同盟 http://www.wankuma.com/
  4. 4. 今日は・・・ 昨年リリースされた.NET Framework 3.5 その目玉機能であるLINQですが、 新たな概念のため 有効に活用されていません そんなLINQを実例を交えて紹介します わんくま同盟 http://www.wankuma.com/
  5. 5. なお・・・ 今回はC#の例を紹介します! VBでもそんなに変わらないので 気後れしなくていいですよ v(^ ^)v わんくま同盟 http://www.wankuma.com/
  6. 6. Agenda • LINQとは? • LINQの基本 • 便利なLINQ わんくま同盟 http://www.wankuma.com/
  7. 7. LINQとは? わんくま同盟 http://www.wankuma.com/
  8. 8. LINQとは? • LINQ (Language Integrated Query) 日本語訳:統合言語クエリ – C#、VBなどのプログラミング言語に統合され た、あらゆるデータを同様の構文で問い合わ せ(クエリ)を行う方法 – .NET Framework 3.5に組み込まれた 最強 の機能 わんくま同盟 http://www.wankuma.com/
  9. 9. LINQとは? • LINQの機能 – 様々なデータ集合に対して、以下のような操 作を行う • フィルタリング • 列挙 • 射影 • etc… わんくま同盟 http://www.wankuma.com/
  10. 10. LINQとは? • LINQの種類 – LINQ to Object – LINQ to DataSet – LINQ to XML – LINQ to SQL – LINQ to Entity わんくま同盟 http://www.wankuma.com/
  11. 11. LINQとは? • LINQ to Object – 様々なコレクションの変数に対するクエリ • 配列、リスト、など – 具体的には、IEnumerable<T>インターフェイ スを実装する型ならなんでも可能 • IEnumerable<T>の機能は列挙すること • つまり列挙できるものなら何でも可能ということ わんくま同盟 http://www.wankuma.com/
  12. 12. LINQの基本 わんくま同盟 http://www.wankuma.com/
  13. 13. LINQの基本 • クエリ構文 – SQLのようなクエリ式でデータを操作 int[] values = { 1, 2, 3, 4, 5 }; var q = from value in values where value < 4 select String.Format(quot;{0:D6}quot;, value) ; foreach (var value in q) Console.WriteLine(value); ※この例での結果はIEnumerable<string> わんくま同盟 http://www.wankuma.com/
  14. 14. LINQの基本 • クエリ構文 – 実行結果 わんくま同盟 http://www.wankuma.com/
  15. 15. LINQの基本 • メソッド構文 – メソッドチェーンでクエリを構築 int[] values = { 1, 2, 3, 4, 5 }; var q = from values.Where(value => value < 4) .Select(value => String.Format(quot;{0:D6}quot;, value)) ; foreach (var value in q) Console.WriteLine(value); ※「value => ~」はラムダ式 わんくま同盟 http://www.wankuma.com/
  16. 16. LINQの基本 • メソッド構文 – WhereメソッドやSelectメソッドの正体は、 System.Linq名前空間に定義された、 IEnumerable<T>の拡張メソッド – クエリ式はこのメソッド構文のSyntax Sugar LINQはこのメソッド群を いかに上手く使うかが勝負 わんくま同盟 http://www.wankuma.com/
  17. 17. LINQの基本 • クエリ構文とメソッド構文の使い分け – クエリ構文 • 条件指定、並べ替えなど複合的に行う場合 • 1つの条件でフィルタリングするだけなら、メ ソッド構文の方が単純 – メソッド構文 • 単一のメソッドで終わるような場合 • 同じラムダ式を複数回書くのが面倒 わんくま同盟 http://www.wankuma.com/
  18. 18. LINQの基本 • クエリ構文とメソッド構文の使い分け var q = from value in values where value < 4 & value % 3 == 0 orderby value descending select String.Format(quot;{0:D6}quot;, value) ; var q = values .Where(value => value < 4 & value % 3 == 0) .OrderByDescending(value => value) .Select(value => String.Format(quot;{0:D6}quot;, value)) ; わんくま同盟 http://www.wankuma.com/
  19. 19. LINQの基本 • クエリ構文とメソッド構文の使い分け var q = from value in values where value < 4 select value ; var q = values.Where(value => value < 4); わんくま同盟 http://www.wankuma.com/
  20. 20. LINQの基本 • LINQで気を付けること – LINQの中身はあくまで値の列挙とその操作、 つまりforeach – あまり使いすぎるとパフォーマンス悪化の可 能性 用法、用量を守って 正しくお使いください わんくま同盟 http://www.wankuma.com/
  21. 21. 便利なLINQ わんくま同盟 http://www.wankuma.com/
  22. 22. 便利なLINQ • Whereメソッド – コレクションのフィルタリングを行う var values = Enumerable.Range(1, 20); var q = values.Where(value => value % 3 == 0); わんくま同盟 http://www.wankuma.com/
  23. 23. 便利なLINQ • Any、Allメソッド – コレクションの項目のいずれか(Any)、もし くは全て(All)が条件を満たすか判定 string[] values = { quot;hogequot;, quot;foo“ , quot;barquot;, quot;piyoquot;, quot;fugaquot; }; bool any = values.Any(value => value.StartWith(quot;hquot;)); // true bool all = values.All(value => value.StartWith(quot;hquot;)); // false デモで従来の方法と比較します わんくま同盟 http://www.wankuma.com/
  24. 24. 便利なLINQ • Sum、Average、Max、Minメソッド – コレクションの値の総和(Sum)、平均 (Average)、最大値(Max)、最小値 (Min)を求める var values = Enumerable.Range(1, 20); var sum = values.Sum(); var avg = values.Average(); var max = values.Max(); var min = values.Min(); デモで従来の方法と比較します わんくま同盟 http://www.wankuma.com/
  25. 25. 便利なLINQ • OrdayBy、OrderByDescendingメソッド – コレクションを並び替えて取得する var values = new Person[] { new Person{ Name=quot;Taroquot;, Age=23 } , new Person{ Name=quot;Jiroquot;, Age=17 } , new Person{ Name=quot;Hanakoquot;, Age=21 } , new Person{ Name=quot;Kaoruquot;, Age=15 } }; デモで従来の方法と比較します var orderByName = values .OrderBy(value => value.Name); var orderByAgeDescending = values .OrderByDescending(value => value.Age); わんくま同盟 http://www.wankuma.com/
  26. 26. 便利なLINQ • Reverseメソッド – コレクションを逆順に取得する var values = Enumerable.Range(1, 20); var reverseValues = values.Reverse(); デモで従来の方法と比較します わんくま同盟 http://www.wankuma.com/
  27. 27. 便利なLINQ • GroupByメソッド – コレクションをグルーピングする var values = new Sales[] { new Sales { ProductId = 1 , SalesQty = 10 }, ~ }; var groupedValues = values.GroupBy(value => value.ProductId); デモで従来の方法と比較します foreach (var group in groupedValues) { Console.WriteLine(quot;■ProductId : {0}quot;, group.Key); int TotalSalesQty = group.Sum(value => value.SalesQty); foreach(var value in group) { Console.WriteLine(value); } } わんくま同盟 http://www.wankuma.com/
  28. 28. 便利なLINQ • ToArray、ToList、To~メソッド – コレクションをTo~で指定された型に変換す る var values = Enumerable.Range(1, 20); List<int> intList = values.ToList(); int[] intArray = values.ToArray(); デモで従来の方法と比較します わんくま同盟 http://www.wankuma.com/
  29. 29. まとめ わんくま同盟 http://www.wankuma.com/
  30. 30. まとめ • LINQにはクエリ構文、メソッド構文があり、 適宜使い分ける • LINQの中身はforeach • LINQを使うことで、従来よりも遥かに短い コードで、しかもわかりやすくコレクショ ンを扱える そして何よりも・・・ わんくま同盟 http://www.wankuma.com/
  31. 31. LINQ 超便利! ぜひ使うべき! わんくま同盟 http://www.wankuma.com/
  32. 32. おしまい! ご静聴ありがとうございました <(_ _)> わんくま同盟 http://www.wankuma.com/
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×