Your SlideShare is downloading. ×

Choi LINQ

2,069
views

Published on


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

No Downloads
Views
Total Views
2,069
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
9
Comments
0
Likes
2
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. 業務に役立つちょいLINQ まさる@わんくま同盟 http://blogs.wankuma.com/masaru/ わんくま同盟 http://www.wankuma.com/
  • 2. 自己紹介 • ハンドル まさる • 性別 見ての通り♂ • 職業 SE兼プログラマ (業務ではVB、趣味ではC#がメイン) • 趣味 – 楽器演奏 バスクラリネット – 読書 • 小説 • 技術書 • ビジネス書 わんくま同盟 http://www.wankuma.com/
  • 3. 詳しくは… まさるblogでググってくださいませ <(_ _)> わんくま同盟 http://www.wankuma.com/
  • 4. 今日は・・・ 昨年リリースされた.NET Framework 3.5 その目玉機能であるLINQですが、 新たな概念のため 有効に活用されていません そんなLINQを実例を交えて紹介します わんくま同盟 http://www.wankuma.com/
  • 5. なお・・・ 今回はC#の例を紹介します! VBでもそんなに変わらないので 気後れしなくていいですよ v(^ ^)v わんくま同盟 http://www.wankuma.com/
  • 6. Agenda • LINQとは? • LINQの基本 • 便利なLINQ わんくま同盟 http://www.wankuma.com/
  • 7. LINQとは? わんくま同盟 http://www.wankuma.com/
  • 8. LINQとは? • LINQ (Language Integrated Query) 日本語訳:統合言語クエリ – C#、VBなどのプログラミング言語に統合され た、あらゆるデータを同様の構文で問い合わ せ(クエリ)を行う方法 – .NET Framework 3.5に組み込まれた 最強 の機能 わんくま同盟 http://www.wankuma.com/
  • 9. LINQとは? • LINQの機能 – 様々なデータ集合に対して、以下のような操 作を行う • フィルタリング • 列挙 • 射影 • etc… わんくま同盟 http://www.wankuma.com/
  • 10. LINQとは? • LINQの種類 – LINQ to Object – LINQ to DataSet – LINQ to XML – LINQ to SQL – LINQ to Entity わんくま同盟 http://www.wankuma.com/
  • 11. LINQとは? • LINQ to Object – 様々なコレクションの変数に対するクエリ • 配列、リスト、など – 具体的には、IEnumerable<T>インターフェイ スを実装する型ならなんでも可能 • IEnumerable<T>の機能は列挙すること • つまり列挙できるものなら何でも可能ということ わんくま同盟 http://www.wankuma.com/
  • 12. LINQの基本 わんくま同盟 http://www.wankuma.com/
  • 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. LINQの基本 • クエリ構文 – 実行結果 わんくま同盟 http://www.wankuma.com/
  • 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. LINQの基本 • メソッド構文 – WhereメソッドやSelectメソッドの正体は、 System.Linq名前空間に定義された、 IEnumerable<T>の拡張メソッド – クエリ式はこのメソッド構文のSyntax Sugar LINQはこのメソッド群を いかに上手く使うかが勝負 わんくま同盟 http://www.wankuma.com/
  • 17. LINQの基本 • クエリ構文とメソッド構文の使い分け – クエリ構文 • 条件指定、並べ替えなど複合的に行う場合 • 1つの条件でフィルタリングするだけなら、メ ソッド構文の方が単純 – メソッド構文 • 単一のメソッドで終わるような場合 • 同じラムダ式を複数回書くのが面倒 わんくま同盟 http://www.wankuma.com/
  • 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. LINQの基本 • クエリ構文とメソッド構文の使い分け var q = from value in values where value < 4 select value ; var q = values.Where(value => value < 4); わんくま同盟 http://www.wankuma.com/
  • 20. LINQの基本 • LINQで気を付けること – LINQの中身はあくまで値の列挙とその操作、 つまりforeach – あまり使いすぎるとパフォーマンス悪化の可 能性 用法、用量を守って 正しくお使いください わんくま同盟 http://www.wankuma.com/
  • 21. 便利なLINQ わんくま同盟 http://www.wankuma.com/
  • 22. 便利なLINQ • Whereメソッド – コレクションのフィルタリングを行う var values = Enumerable.Range(1, 20); var q = values.Where(value => value % 3 == 0); わんくま同盟 http://www.wankuma.com/
  • 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. 便利な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. 便利な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. 便利なLINQ • Reverseメソッド – コレクションを逆順に取得する var values = Enumerable.Range(1, 20); var reverseValues = values.Reverse(); デモで従来の方法と比較します わんくま同盟 http://www.wankuma.com/
  • 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. 便利な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. まとめ わんくま同盟 http://www.wankuma.com/
  • 30. まとめ • LINQにはクエリ構文、メソッド構文があり、 適宜使い分ける • LINQの中身はforeach • LINQを使うことで、従来よりも遥かに短い コードで、しかもわかりやすくコレクショ ンを扱える そして何よりも・・・ わんくま同盟 http://www.wankuma.com/
  • 31. LINQ 超便利! ぜひ使うべき! わんくま同盟 http://www.wankuma.com/
  • 32. おしまい! ご静聴ありがとうございました <(_ _)> わんくま同盟 http://www.wankuma.com/