Submit Search
Upload
知って得するC# LINQ to Objects編
•
21 likes
•
12,914 views
Shota Baba
Follow
Technology
Report
Share
Report
Share
1 of 50
Download now
Download to read offline
Recommended
GUI アプリケーションにおける MVC
GUI アプリケーションにおける MVC
Yu Nobuoka
オーバーエンジニアリングって何? #devsumi #devsumiA
オーバーエンジニアリングって何? #devsumi #devsumiA
Ore Product
1076: CUDAデバッグ・プロファイリング入門
1076: CUDAデバッグ・プロファイリング入門
NVIDIA Japan
データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2
データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2
Yahoo!デベロッパーネットワーク
A-Frameで始めるWebXRとハンドトラッキング (HoloLens2/Oculus Quest対応)
A-Frameで始めるWebXRとハンドトラッキング (HoloLens2/Oculus Quest対応)
Takashi Yoshinaga
Spring Fest 2017 「エンタープライズで利用するSpring Boot」#jsug #sf_h1
Spring Fest 2017 「エンタープライズで利用するSpring Boot」#jsug #sf_h1
Takeshi Hirosue
Kotlinアンチパターン
Kotlinアンチパターン
Recruit Lifestyle Co., Ltd.
HoloLens2とPCで、WebRTCで映像をやりとり
HoloLens2とPCで、WebRTCで映像をやりとり
聡 大久保
Recommended
GUI アプリケーションにおける MVC
GUI アプリケーションにおける MVC
Yu Nobuoka
オーバーエンジニアリングって何? #devsumi #devsumiA
オーバーエンジニアリングって何? #devsumi #devsumiA
Ore Product
1076: CUDAデバッグ・プロファイリング入門
1076: CUDAデバッグ・プロファイリング入門
NVIDIA Japan
データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2
データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2
Yahoo!デベロッパーネットワーク
A-Frameで始めるWebXRとハンドトラッキング (HoloLens2/Oculus Quest対応)
A-Frameで始めるWebXRとハンドトラッキング (HoloLens2/Oculus Quest対応)
Takashi Yoshinaga
Spring Fest 2017 「エンタープライズで利用するSpring Boot」#jsug #sf_h1
Spring Fest 2017 「エンタープライズで利用するSpring Boot」#jsug #sf_h1
Takeshi Hirosue
Kotlinアンチパターン
Kotlinアンチパターン
Recruit Lifestyle Co., Ltd.
HoloLens2とPCで、WebRTCで映像をやりとり
HoloLens2とPCで、WebRTCで映像をやりとり
聡 大久保
AI x WebAR: MediaPipeのハンドトラッキングを使ってみよう
AI x WebAR: MediaPipeのハンドトラッキングを使ってみよう
Takashi Yoshinaga
【関東GPGPU勉強会#3】OpenCVの新機能 UMatを先取りしよう
【関東GPGPU勉強会#3】OpenCVの新機能 UMatを先取りしよう
Yasuhiro Yoshimura
Cloud Spanner をより便利にする運用支援ツールの紹介
Cloud Spanner をより便利にする運用支援ツールの紹介
gree_tech
Go入門
Go入門
Takuya Ueda
Apache Airflow入門 (マーケティングデータ分析基盤技術勉強会)
Apache Airflow入門 (マーケティングデータ分析基盤技術勉強会)
Takeshi Mikami
Unity外注発注改善
Unity外注発注改善
Shota Suzuki
はじめようARCore:自己位置推定・平面検出・FaceTracking
はじめようARCore:自己位置推定・平面検出・FaceTracking
Takashi Yoshinaga
ネットワーク自動化、なに使う? ~自動化ツール紹介~(2017/08/18追加開催)
ネットワーク自動化、なに使う? ~自動化ツール紹介~(2017/08/18追加開催)
akira6592
Google Cloud のネットワークとロードバランサ
Google Cloud のネットワークとロードバランサ
Google Cloud Platform - Japan
FlutterとSupabaseでRDBを使った サーバーレスアプリ開発
FlutterとSupabaseでRDBを使った サーバーレスアプリ開発
TylerShukert
【Unite Tokyo 2019】大量のアセットも怖くない!~HTTP/2による高速な通信の実装例~
【Unite Tokyo 2019】大量のアセットも怖くない!~HTTP/2による高速な通信の実装例~
UnityTechnologiesJapan002
[Cloud OnAir] GCP 上でストリーミングデータ処理基盤を構築してみよう! 2018年9月13日 放送
[Cloud OnAir] GCP 上でストリーミングデータ処理基盤を構築してみよう! 2018年9月13日 放送
Google Cloud Platform - Japan
MVC の Model を考える
MVC の Model を考える
tomo_masakura
C#, C/CLI と CUDAによる画像処理ことはじめ
C#, C/CLI と CUDAによる画像処理ことはじめ
NVIDIA Japan
ゼロから始める自作 CPU 入門
ゼロから始める自作 CPU 入門
Hirotaka Kawata
なぜなにリアルタイムレンダリング
なぜなにリアルタイムレンダリング
Satoshi Kodaira
クラウド時代だからSpring-Retryフレームワーク
クラウド時代だからSpring-Retryフレームワーク
Y Watanabe
UE4を使用したゲーム開発の為のネットワーク対応その1
UE4を使用したゲーム開発の為のネットワーク対応その1
fuminyami
Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方
Taku Miyakawa
空撮画像技術と3次元リアルタイムデータの可視化について
空撮画像技術と3次元リアルタイムデータの可視化について
Ryousuke Wayama
Project lambda
Project lambda
Appresso Engineering Team
ADO.NETとORMとMicro-ORM -dapper dot netを使ってみた
ADO.NETとORMとMicro-ORM -dapper dot netを使ってみた
Narami Kiyokura
More Related Content
What's hot
AI x WebAR: MediaPipeのハンドトラッキングを使ってみよう
AI x WebAR: MediaPipeのハンドトラッキングを使ってみよう
Takashi Yoshinaga
【関東GPGPU勉強会#3】OpenCVの新機能 UMatを先取りしよう
【関東GPGPU勉強会#3】OpenCVの新機能 UMatを先取りしよう
Yasuhiro Yoshimura
Cloud Spanner をより便利にする運用支援ツールの紹介
Cloud Spanner をより便利にする運用支援ツールの紹介
gree_tech
Go入門
Go入門
Takuya Ueda
Apache Airflow入門 (マーケティングデータ分析基盤技術勉強会)
Apache Airflow入門 (マーケティングデータ分析基盤技術勉強会)
Takeshi Mikami
Unity外注発注改善
Unity外注発注改善
Shota Suzuki
はじめようARCore:自己位置推定・平面検出・FaceTracking
はじめようARCore:自己位置推定・平面検出・FaceTracking
Takashi Yoshinaga
ネットワーク自動化、なに使う? ~自動化ツール紹介~(2017/08/18追加開催)
ネットワーク自動化、なに使う? ~自動化ツール紹介~(2017/08/18追加開催)
akira6592
Google Cloud のネットワークとロードバランサ
Google Cloud のネットワークとロードバランサ
Google Cloud Platform - Japan
FlutterとSupabaseでRDBを使った サーバーレスアプリ開発
FlutterとSupabaseでRDBを使った サーバーレスアプリ開発
TylerShukert
【Unite Tokyo 2019】大量のアセットも怖くない!~HTTP/2による高速な通信の実装例~
【Unite Tokyo 2019】大量のアセットも怖くない!~HTTP/2による高速な通信の実装例~
UnityTechnologiesJapan002
[Cloud OnAir] GCP 上でストリーミングデータ処理基盤を構築してみよう! 2018年9月13日 放送
[Cloud OnAir] GCP 上でストリーミングデータ処理基盤を構築してみよう! 2018年9月13日 放送
Google Cloud Platform - Japan
MVC の Model を考える
MVC の Model を考える
tomo_masakura
C#, C/CLI と CUDAによる画像処理ことはじめ
C#, C/CLI と CUDAによる画像処理ことはじめ
NVIDIA Japan
ゼロから始める自作 CPU 入門
ゼロから始める自作 CPU 入門
Hirotaka Kawata
なぜなにリアルタイムレンダリング
なぜなにリアルタイムレンダリング
Satoshi Kodaira
クラウド時代だからSpring-Retryフレームワーク
クラウド時代だからSpring-Retryフレームワーク
Y Watanabe
UE4を使用したゲーム開発の為のネットワーク対応その1
UE4を使用したゲーム開発の為のネットワーク対応その1
fuminyami
Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方
Taku Miyakawa
空撮画像技術と3次元リアルタイムデータの可視化について
空撮画像技術と3次元リアルタイムデータの可視化について
Ryousuke Wayama
What's hot
(20)
AI x WebAR: MediaPipeのハンドトラッキングを使ってみよう
AI x WebAR: MediaPipeのハンドトラッキングを使ってみよう
【関東GPGPU勉強会#3】OpenCVの新機能 UMatを先取りしよう
【関東GPGPU勉強会#3】OpenCVの新機能 UMatを先取りしよう
Cloud Spanner をより便利にする運用支援ツールの紹介
Cloud Spanner をより便利にする運用支援ツールの紹介
Go入門
Go入門
Apache Airflow入門 (マーケティングデータ分析基盤技術勉強会)
Apache Airflow入門 (マーケティングデータ分析基盤技術勉強会)
Unity外注発注改善
Unity外注発注改善
はじめようARCore:自己位置推定・平面検出・FaceTracking
はじめようARCore:自己位置推定・平面検出・FaceTracking
ネットワーク自動化、なに使う? ~自動化ツール紹介~(2017/08/18追加開催)
ネットワーク自動化、なに使う? ~自動化ツール紹介~(2017/08/18追加開催)
Google Cloud のネットワークとロードバランサ
Google Cloud のネットワークとロードバランサ
FlutterとSupabaseでRDBを使った サーバーレスアプリ開発
FlutterとSupabaseでRDBを使った サーバーレスアプリ開発
【Unite Tokyo 2019】大量のアセットも怖くない!~HTTP/2による高速な通信の実装例~
【Unite Tokyo 2019】大量のアセットも怖くない!~HTTP/2による高速な通信の実装例~
[Cloud OnAir] GCP 上でストリーミングデータ処理基盤を構築してみよう! 2018年9月13日 放送
[Cloud OnAir] GCP 上でストリーミングデータ処理基盤を構築してみよう! 2018年9月13日 放送
MVC の Model を考える
MVC の Model を考える
C#, C/CLI と CUDAによる画像処理ことはじめ
C#, C/CLI と CUDAによる画像処理ことはじめ
ゼロから始める自作 CPU 入門
ゼロから始める自作 CPU 入門
なぜなにリアルタイムレンダリング
なぜなにリアルタイムレンダリング
クラウド時代だからSpring-Retryフレームワーク
クラウド時代だからSpring-Retryフレームワーク
UE4を使用したゲーム開発の為のネットワーク対応その1
UE4を使用したゲーム開発の為のネットワーク対応その1
Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方
空撮画像技術と3次元リアルタイムデータの可視化について
空撮画像技術と3次元リアルタイムデータの可視化について
Similar to 知って得するC# LINQ to Objects編
Project lambda
Project lambda
Appresso Engineering Team
ADO.NETとORMとMicro-ORM -dapper dot netを使ってみた
ADO.NETとORMとMicro-ORM -dapper dot netを使ってみた
Narami Kiyokura
[東京] JapanSharePointGroup 勉強会 #2
[東京] JapanSharePointGroup 勉強会 #2
Atsuo Yamasaki
20080201
20080201
小野 修司
基礎から見直す ASP.NET MVC の単体テスト自動化方法 ~ Windows Azure 関連もあるかも~
基礎から見直す ASP.NET MVC の単体テスト自動化方法 ~ Windows Azure 関連もあるかも~
normalian
はじめてのPowerShell
はじめてのPowerShell
Trainocate Japan, Ltd.
20180123 power shell
20180123 power shell
Trainocate Japan, Ltd.
Apache Torqueについて
Apache Torqueについて
tako pons
ZabbixのAPIを使って運用を楽しくする話
ZabbixのAPIを使って運用を楽しくする話
Masahito Zembutsu
Pythonによる機械学習入門 ~Deep Learningに挑戦~
Pythonによる機械学習入門 ~Deep Learningに挑戦~
Yasutomo Kawanishi
DeclarativeSql
DeclarativeSql
Takaaki Suzuki
TypeScript 言語処理系ことはじめ
TypeScript 言語処理系ことはじめ
Yu Nobuoka
JavaScriptクイックスタート
JavaScriptクイックスタート
Shumpei Shiraishi
MySQLのパフォーマンスの話
MySQLのパフォーマンスの話
Tetsuro Ikeda
C# 3.0 以降
C# 3.0 以降
Fujio Kojima
Start!! Ruby
Start!! Ruby
mitim
SQLマッピングフレームワーク「Kobati」のはなし
SQLマッピングフレームワーク「Kobati」のはなし
Kazuki Minamitani
【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第6回 ‟文字列とオブジェクト„
【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第6回 ‟文字列とオブジェクト„
和弘 井之上
今さら聞けないHadoop勉強会第3回 セントラルソフト株式会社(20120327)
今さら聞けないHadoop勉強会第3回 セントラルソフト株式会社(20120327)
YoheiOkuyama
そしてjsの基礎へ戻る#4
そしてjsの基礎へ戻る#4
Shingo Inoue
Similar to 知って得するC# LINQ to Objects編
(20)
Project lambda
Project lambda
ADO.NETとORMとMicro-ORM -dapper dot netを使ってみた
ADO.NETとORMとMicro-ORM -dapper dot netを使ってみた
[東京] JapanSharePointGroup 勉強会 #2
[東京] JapanSharePointGroup 勉強会 #2
20080201
20080201
基礎から見直す ASP.NET MVC の単体テスト自動化方法 ~ Windows Azure 関連もあるかも~
基礎から見直す ASP.NET MVC の単体テスト自動化方法 ~ Windows Azure 関連もあるかも~
はじめてのPowerShell
はじめてのPowerShell
20180123 power shell
20180123 power shell
Apache Torqueについて
Apache Torqueについて
ZabbixのAPIを使って運用を楽しくする話
ZabbixのAPIを使って運用を楽しくする話
Pythonによる機械学習入門 ~Deep Learningに挑戦~
Pythonによる機械学習入門 ~Deep Learningに挑戦~
DeclarativeSql
DeclarativeSql
TypeScript 言語処理系ことはじめ
TypeScript 言語処理系ことはじめ
JavaScriptクイックスタート
JavaScriptクイックスタート
MySQLのパフォーマンスの話
MySQLのパフォーマンスの話
C# 3.0 以降
C# 3.0 以降
Start!! Ruby
Start!! Ruby
SQLマッピングフレームワーク「Kobati」のはなし
SQLマッピングフレームワーク「Kobati」のはなし
【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第6回 ‟文字列とオブジェクト„
【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第6回 ‟文字列とオブジェクト„
今さら聞けないHadoop勉強会第3回 セントラルソフト株式会社(20120327)
今さら聞けないHadoop勉強会第3回 セントラルソフト株式会社(20120327)
そしてjsの基礎へ戻る#4
そしてjsの基礎へ戻る#4
More from Shota Baba
Unity で実装するエイジングテストのお話
Unity で実装するエイジングテストのお話
Shota Baba
【Visual Studio】開発効率を上げる25個の拡張機能
【Visual Studio】開発効率を上げる25個の拡張機能
Shota Baba
Unity エディタ拡張
Unity エディタ拡張
Shota Baba
知って得するUnity エディタ拡張編
知って得するUnity エディタ拡張編
Shota Baba
知って得するUnity
知って得するUnity
Shota Baba
知って得するC#
知って得するC#
Shota Baba
More from Shota Baba
(6)
Unity で実装するエイジングテストのお話
Unity で実装するエイジングテストのお話
【Visual Studio】開発効率を上げる25個の拡張機能
【Visual Studio】開発効率を上げる25個の拡張機能
Unity エディタ拡張
Unity エディタ拡張
知って得するUnity エディタ拡張編
知って得するUnity エディタ拡張編
知って得するUnity
知って得するUnity
知って得するC#
知って得するC#
Recently uploaded
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NTT DATA Technology & Innovation
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
Toru Tamaki
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
atsushi061452
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
CRI Japan, Inc.
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Hiroshi Tomioka
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
Toru Tamaki
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
CRI Japan, Inc.
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
Hiroshi Tomioka
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
Recently uploaded
(11)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
知って得する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 now