Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
EN
Uploaded by
Shota Baba
12,940 views
知って得するC# LINQ to Objects編
Technology
◦
Read more
21
Save
Share
Embed
Embed presentation
Download
Downloaded 63 times
1
/ 50
2
/ 50
3
/ 50
4
/ 50
5
/ 50
6
/ 50
7
/ 50
8
/ 50
9
/ 50
10
/ 50
11
/ 50
12
/ 50
13
/ 50
14
/ 50
15
/ 50
16
/ 50
17
/ 50
18
/ 50
19
/ 50
20
/ 50
21
/ 50
22
/ 50
23
/ 50
24
/ 50
25
/ 50
26
/ 50
27
/ 50
28
/ 50
29
/ 50
30
/ 50
31
/ 50
32
/ 50
33
/ 50
34
/ 50
35
/ 50
36
/ 50
37
/ 50
38
/ 50
39
/ 50
40
/ 50
41
/ 50
42
/ 50
43
/ 50
44
/ 50
45
/ 50
46
/ 50
47
/ 50
48
/ 50
49
/ 50
50
/ 50
More Related Content
PDF
PHP の GC の話
by
y-uti
PPTX
async/await のしくみ
by
信之 岩永
PDF
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
by
Preferred Networks
PDF
Linuxにて複数のコマンドを並列実行(同時実行数の制限付き)
by
Hiro H.
ODP
Format string Attack
by
icchy
PPTX
大規模分散システムの現在 -- Twitter
by
maruyama097
PDF
クリーンアーキテクチャの考え方にもとづく Laravel との付き合い方 #phpconokinawa
by
Shohei Okada
PDF
If文から機械学習への道
by
nishio
PHP の GC の話
by
y-uti
async/await のしくみ
by
信之 岩永
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
by
Preferred Networks
Linuxにて複数のコマンドを並列実行(同時実行数の制限付き)
by
Hiro H.
Format string Attack
by
icchy
大規模分散システムの現在 -- Twitter
by
maruyama097
クリーンアーキテクチャの考え方にもとづく Laravel との付き合い方 #phpconokinawa
by
Shohei Okada
If文から機械学習への道
by
nishio
What's hot
PDF
Webアプリを並行開発する際のマイグレーション戦略
by
Takayuki Shimizukawa
PDF
Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.
by
kiki utagawa
PDF
「GraphDB徹底入門」〜構造や仕組み理解から使いどころ・種々のGraphDBの比較まで幅広く〜
by
Takahiro Inoue
PDF
オブジェクト指向エクササイズのススメ
by
Yoji Kanno
PDF
Dockerfileを改善するためのBest Practice 2019年版
by
Masahito Zembutsu
PDF
ふつうの受託開発チームのつくりかた
by
Yoshitaka Kawashima
PDF
Apache Arrow - データ処理ツールの次世代プラットフォーム
by
Kouhei Sutou
PPTX
境界付けられたコンテキスト 概念編 (ドメイン駆動設計用語解説シリーズ)
by
Koichiro Matsuoka
PDF
Dockerfile を書くためのベストプラクティス解説編
by
Masahito Zembutsu
PDF
GoによるWebアプリ開発のキホン
by
Akihiko Horiuchi
PDF
ブルックスのいう銀の弾丸とは何か?
by
Yoshitaka Kawashima
PDF
モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!―
by
shinjiigarashi
PDF
ライブラリ作成のすゝめ - 事例から見る個人OSS開発の効能
by
Yoshifumi Kawai
PDF
たのしい関数型
by
Shinichi Kozake
PDF
オブジェクト指向できていますか?
by
Moriharu Ohzu
PPTX
5分で出来る!イケてるconfluenceページ
by
CLARA, Inc.
PDF
RSA暗号運用でやってはいけない n のこと #ssmjp
by
sonickun
PDF
40歳過ぎてもエンジニアでいるためにやっていること
by
onozaty
PDF
【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう
by
Unity Technologies Japan K.K.
PDF
C/C++プログラマのための開発ツール
by
MITSUNARI Shigeo
Webアプリを並行開発する際のマイグレーション戦略
by
Takayuki Shimizukawa
Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.
by
kiki utagawa
「GraphDB徹底入門」〜構造や仕組み理解から使いどころ・種々のGraphDBの比較まで幅広く〜
by
Takahiro Inoue
オブジェクト指向エクササイズのススメ
by
Yoji Kanno
Dockerfileを改善するためのBest Practice 2019年版
by
Masahito Zembutsu
ふつうの受託開発チームのつくりかた
by
Yoshitaka Kawashima
Apache Arrow - データ処理ツールの次世代プラットフォーム
by
Kouhei Sutou
境界付けられたコンテキスト 概念編 (ドメイン駆動設計用語解説シリーズ)
by
Koichiro Matsuoka
Dockerfile を書くためのベストプラクティス解説編
by
Masahito Zembutsu
GoによるWebアプリ開発のキホン
by
Akihiko Horiuchi
ブルックスのいう銀の弾丸とは何か?
by
Yoshitaka Kawashima
モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!―
by
shinjiigarashi
ライブラリ作成のすゝめ - 事例から見る個人OSS開発の効能
by
Yoshifumi Kawai
たのしい関数型
by
Shinichi Kozake
オブジェクト指向できていますか?
by
Moriharu Ohzu
5分で出来る!イケてるconfluenceページ
by
CLARA, Inc.
RSA暗号運用でやってはいけない n のこと #ssmjp
by
sonickun
40歳過ぎてもエンジニアでいるためにやっていること
by
onozaty
【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう
by
Unity Technologies Japan K.K.
C/C++プログラマのための開発ツール
by
MITSUNARI Shigeo
Similar to 知って得するC# LINQ to Objects編
PDF
知って得するC#
by
Shota Baba
PDF
UnityでのLINQ活用例
by
Ryota Murohoshi
PDF
Unityで覚えるC#
by
Masamitsu Ishikawa
PPT
CLR/H No.35-2
by
Nobuhisa Koizumi
PDF
LINQ in Unity
by
Yoshifumi Kawai
PPTX
Java8 Lambda chapter5
by
Takinami Kei
PDF
ソーシャルゲームの為のデータベース設計
by
kaminashi
PPTX
C# LINQ ~深く知って、使いまくろう~
by
Fujio Kojima
PDF
Databasedesignforsocialgames 110115195940-phpapp02
by
hideki hasegawa
PDF
ソーシャルゲームのためのデータベース設計
by
Yoshinori Matsunobu
PPTX
Unity C#3からC#6に向けて
by
onotchi_
PDF
オブジェクト指向を学ぼう
by
Yusuke Kikuchi
PPTX
Visual basic14 の話
by
Kazuki Kachi
PPTX
メタな感じのプログラミング(プロ生 + わんくま 071118)
by
Tatsuya Ishikawa
PPTX
C#を始めたばかりの人へのLINQ to Objects
by
Fumitaka Yamada
PPTX
Deep Dive C# 6.0
by
信之 岩永
PDF
第2回c#画像処理講習
by
Koshiro Miyauchi
PDF
私とUnityとLINQと
by
Ryota Murohoshi
PDF
Entity Framework
by
Nakashima Yujiro
PPT
実行時のために最適なデータ構造を作成しよう
by
Hiroki Omae
知って得するC#
by
Shota Baba
UnityでのLINQ活用例
by
Ryota Murohoshi
Unityで覚えるC#
by
Masamitsu Ishikawa
CLR/H No.35-2
by
Nobuhisa Koizumi
LINQ in Unity
by
Yoshifumi Kawai
Java8 Lambda chapter5
by
Takinami Kei
ソーシャルゲームの為のデータベース設計
by
kaminashi
C# LINQ ~深く知って、使いまくろう~
by
Fujio Kojima
Databasedesignforsocialgames 110115195940-phpapp02
by
hideki hasegawa
ソーシャルゲームのためのデータベース設計
by
Yoshinori Matsunobu
Unity C#3からC#6に向けて
by
onotchi_
オブジェクト指向を学ぼう
by
Yusuke Kikuchi
Visual basic14 の話
by
Kazuki Kachi
メタな感じのプログラミング(プロ生 + わんくま 071118)
by
Tatsuya Ishikawa
C#を始めたばかりの人へのLINQ to Objects
by
Fumitaka Yamada
Deep Dive C# 6.0
by
信之 岩永
第2回c#画像処理講習
by
Koshiro Miyauchi
私とUnityとLINQと
by
Ryota Murohoshi
Entity Framework
by
Nakashima Yujiro
実行時のために最適なデータ構造を作成しよう
by
Hiroki Omae
知って得するC# LINQ to Objects編
1.
知って得する C# LINQ to Objects編 株式会社ハ・ン・ド プログラマ 馬場翔太 http://baba-s.hatenablog.com/
2.
スライド内容 1. LINQ to
Objectsとは 2. LINQ to Objectsの使用例
3.
LINQ to Objectsとは
4.
コレクションを扱うための新しい方法 for文やforeach文を使わず下記の様な処理が行えます • 条件を満たす要素の数を取得 • 条件を満たす要素を抽出 •
条件を満たす最初の要素を取得 • 昇順にソート • etc.
5.
LINQ to Objectsを使うために必要なこと using
System.Linq; この一行をソースコードの先頭に追加するだけです
6.
「using System.Linq;」を追加すると… 配列やリストで多くの拡張メソッドが使用可能になります • Count •
Where • First • OrderBy • etc. 次のスライドから順番に紹介していきます
7.
LINQ to Objectsの使用例
8.
条件を満たす要素の数を取得する 従来のコーディング // 兵士の数を取得します var result
= 0; foreach (var character in characters) { if (character.Job == "Soldier") { result++; } }
9.
条件を満たす要素の数を取得する Countメソッドを使用 // 兵士の数を取得します var result
= characters.Count(c => c.Job == "Soldier");
10.
条件を満たす要素を抽出する 従来のコーディング // 兵士のみ取得します var result
= new List<Character>(); foreach (var character in characters) { if (character.Job == "Soldier") { result.Add(character); } }
11.
条件を満たす要素を抽出する Whereメソッドを使用 // 兵士のみ取得します var result
= characters.Where(c => c.Job == "Soldier");
12.
要素を射影する 従来のコーディング // すべてのキャラクターから名前だけ取得します var result
= new List<string>(); foreach (var character in characters) { result.Add(character.Name); }
13.
要素を射影する Selectメソッドを使用 // すべてのキャラクターから名前だけ取得します var result
= characters.Select(c => c.Name);
14.
すべての要素が条件を満たしているか 従来のコーディング // 全員が兵士かどうかを判断します var result
= true; foreach (var character in characters) { if (character.Job != "Soldier") { result = false; break; } }
15.
すべての要素が条件を満たしているか Allメソッドを使用 // 全員が兵士かどうかを判断します var result
= characters.All(c => c.Job == "Soldier");
16.
いずれかの要素が条件を満たしているか 従来のコーディング // 兵士が存在するかどうかを取得します var result
= false; foreach (var character in characters) { if (character.Job == "Soldier") { result = true; break; } }
17.
いずれかの要素が条件を満たしているか Anyメソッドを使用 // 兵士が存在するかどうかを取得します var result
= characters.Any(c => c.Job == "Soldier");
18.
条件を満たす最初の要素を取得する 従来のコーディング // 先頭の兵士を取得します Character result
= null; foreach (var character in characters) { if (character.Job == "Soldier") { result = character; break; } }
19.
条件を満たす最初の要素を取得する Firstメソッドを使用 (条件を満たす要素がない場合は例外になります) // 先頭の兵士を取得します var result
= characters.First(c => c.Job == "Soldier");
20.
条件を満たす最初の要素を取得する FirstOrDefaultメソッドを使用 (条件を満たす要素がない場合は既定値を返します) // 先頭の兵士を取得します var result
= characters.FirstOrDefault(c => c.Job == "Soldier");
21.
条件を満たす最後の要素を取得する 従来のコーディング // 末尾の兵士を取得します Character result
= null; for (int i = characters.Length - 1; i >= 0; i--) { if (characters[i].Job == "Soldier") { result = characters[i]; break; } }
22.
条件を満たす最後の要素を取得する Lastメソッドを使用 (条件を満たす要素がない場合は例外になります) // 末尾の兵士を取得します var result
= characters.Last(c => c.Job == "Soldier");
23.
条件を満たす最後の要素を取得する LastOrDefaultメソッドを使用 (条件を満たす要素がない場合は既定値を返します) // 末尾の兵士を取得します var result
= characters.LastOrDefault(c => c.Job == "Soldier");
24.
最後の要素を取得する 従来のコーディング var result =
characters[characters.Length - 1]; Lastメソッドを使用 var result = characters.Last();
25.
最大値を取得する 従来のコーディング // すべてのキャラクターの中で // 最も大きな力のパラメータを取得します var
result = 0; foreach (var character in characters) { if (result < character.Power) { result = character.Power; } }
26.
最大値を取得する Maxメソッドを使用 // すべてのキャラクターの中で // 最も大きな力のパラメータを取得します var
result = characters.Max(c => c.Power);
27.
最小値を取得する 従来のコーディング // すべてのキャラクターの中で // 最も小さな力のパラメータを取得します var
result = int.MaxValue; foreach (var character in characters) { if (character.Power < result) { result = character.Power; } }
28.
最小値を取得する Minメソッドを使用 // すべてのキャラクターの中で // 最も小さな力のパラメータを取得します var
result = characters.Min(c => c.Power);
29.
最大値を持つ要素を取得する MaxメソッドとFirstメソッドを使用 // 最も大きな力を持つキャラクターを取得します int max
= characters.Max(c => c.Power); var result = characters.First(c => c.Power == max);
30.
最大値を持つ要素をすべて取得する MaxメソッドとWhereメソッドを使用 // 最も大きな力を持つキャラクターをすべて取得します int max
= characters.Max(c => c.Power); var result = characters.Where(c => c.Power == max);
31.
合計値を取得する 従来のコーディング // アイテムの購入金額を取得します var result
= 0; foreach (var item in items) { result += item.Price; }
32.
合計値を取得する Sumメソッドを使用 // アイテムの購入金額を取得します var result
= items.Sum(c => c.Price);
33.
平均値を取得する 従来のコーディング // アイテムの平均金額を取得します var result
= 0; foreach (var item in items) { result += item.Price; } result /= items.Count;
34.
平均値を取得する Averageメソッドを使用 // アイテムの平均金額を取得します var result
= items.Average(c => c.Price);
35.
指定された型に一致する要素を抽出する 従来のコーディング // 錬金術士のみ錬金術を使います foreach (var
character in characters) { var result = character as Alchemist; if (result != null) { result.Alchemy(); } }
36.
指定された型に一致する要素を抽出する OfTypeメソッドを使用 // 錬金術士のみ錬金術を使います foreach (var
result in characters.OfType<Alchemist>()) { result.Alchemy(); }
37.
配列を規定値で初期化する 従来のコーディング // すべてのフラグをONで初期化します bool[] flags
= new bool[100]; for (int i = 0; i < flags.Length; i++) { flags[i] = true; }
38.
配列を規定値で初期化する Repeatメソッドを使用 // すべてのフラグをONで初期化します bool[] flags
= Enumerable.Repeat(true, 100).ToArray();
39.
指定された数の要素を取得する 従来のコーディング //最新の10件のプレゼントの一覧を取得します var result =
new List<Present>(); for (int i = 0; i < 10; i++) { result.Add(presents[i]); }
40.
指定された数の要素を取得する Takeメソッドを使用 //最新の10件のプレゼントの一覧を取得します var result =
presents.Take(10);
41.
指定された数の要素を読み飛ばす 従来のコーディング // 11件目以降のプレゼントの一覧を取得します var result
= new List<Present>(); for (int i = 10; i < presents.Length; i++) { result.Add(presents[i]); }
42.
指定された数の要素を読み飛ばす Skipメソッドを使用 // 11件目以降のプレゼントの一覧を取得します var result
= presents.Skip(10);
43.
ページャーの機能を実装する SkipメソッドとTakeメソッドを使用 // 指定されたページに表示する // プレゼントの一覧を取得します var
result = presents.Skip(page * 10).Take(10);
44.
昇順にソートする OrderByメソッドを使用 // 価格が安い順にアイテムを取得します var result
= items.OrderBy(c => c.Price);
45.
降順にソートする OrderByDescendingメソッドを使用 // 価格が安い順にアイテムを取得します var result
= items.OrderByDescending(c => c.Price);
46.
逆順にする Reverseメソッドを使用 // アイテムの順番を逆転させます var result
= items.Reverse();
47.
重複を取り除く Distinctメソッドを使用 // 名前の重複を取り除きます var result
= names.Distinct();
48.
まとめ
49.
LINQ to Objectsを使用すると… ソースコードを簡潔に記述できます •
for文が減る • foreach文が減る • if文が減る • 変数が減る
50.
ありがとうございました
Download