SlideShare uma empresa Scribd logo
1 de 15
road to Linqulien
 何時?
◦ いまでしょう(違
 何処で?
◦ データ構造の加工・変換
 例えば
 DBから取得したデータをビジネスロジックで処理用に
 WebAPIから取得したデータを画面表示用に
 ファイルから読み込んだCSVを集計する
◦ データの生成
 テストデータとか
 Select
◦ 変換ルールFunc<T,U>を引数にとり、
IEnumerable<T>をIEnumerable<U>に変換する
◦ 順序を指定できるオーバーロードがある
射影元 射影先
赤くする
 SelectMany
◦ 各要素をIEnumerable<T>に射影し、シーケンスを平準
化。する
一つのシーケンスに
 Where
◦ 抽出条件Func<T,bool>を引数にとり、
IEnumerable<T>の中から条件に合うもののみ抽出する
◦ 順序を指定できるオーバーロードがある
選択元 選択先
三角か?
 ひとつだけ
◦ First / FirstOrDefault : 最初の
◦ Last / LastOrDefalut : 最後の
◦ Single / SingleOrDefualt : 複数あれば例外
 条件に一致する限り、
◦ TakeWhile : 条件に一致する限り取得
◦ SkipWhile : 条件に一致する限りスキップ
 個数指定で選択
◦ Skip : 指定個飛ばす
◦ Take : 指定個取得する
 2つ以上の集合同士の結合など
◦ Zip : マージ
 1番目同士、2番目同士…の組を作る
◦ Union : 和集合
 重複は除外される
◦ Concat : 連結
 単なる連結
◦ Join : 結合
 SQLのLeftJoinのような感じ
◦ GroupJoin : グループ化の後、結合
 集計
◦ Sum : 合計
◦ Average : 平均
◦ Count : 個数
◦ Max : 最大
◦ Min : 最少
 判定
◦ Any : 少なくとも1つは
All : 全て
 Aggregate
◦ 畳み込みをおこなう
まず、1個目・
2個目で結果作
成
その結果と3個
目で、再び結果
作成
最後まで繰り返
して、結果を返
す
 変換
◦ ToList : List<T>への変換
◦ ToArray : T[]への変換
◦ ToDictionary : Dictionary<TKey, TValue>への変換
 順列作成
◦ Range
 繰り返し
◦ Repeat
 空
◦ Empty
 型変換
◦ Cast : 各要素をキャストする
◦ OfType : 型条件に合うもののみ選択する
 グループ化
◦ GroupBy : グループ化
◦ ToLookUp : グループ化の後、インデックス作成
 並び替え
◦ OrderBy / OrderByDescending : 昇順・降順
◦ ThenBy / ThenByDescending : 第2キー以降
 オーバーロードを上手く利用しよう
◦ 条件を満たす最初のものを取得
 hoge.Where(pred).First()
 hoge.First(pred)
◦ 条件を満たす件数を取得
 hoge.Where(pred).Count()
 hoge.Count(pred)
◦ 2乗の和を取得
 hoge.Select(x => x*x).Sum()
 hoge.Sum(x => x*x)
 並列処理をLINQで
◦ PLINQ
 AsParallel / AsOrdered
 集合が、空かを確認する
◦ × if (hoge.Count() == 0)
◦ ○ if (!hoge.Any())
 複数回実行を抑制する
◦ ToArray/ToList での結果の確定

Mais conteúdo relacionado

Destaque

C#でこなすexcel課題
C#でこなすexcel課題C#でこなすexcel課題
C#でこなすexcel課題tosaka 2
 
ランク6の俺がパズドラについて語る
ランク6の俺がパズドラについて語るランク6の俺がパズドラについて語る
ランク6の俺がパズドラについて語るtosaka 2
 
XAML & XAML
XAML & XAMLXAML & XAML
XAML & XAMLyone64
 
100枚の中から2枚を選ぶlightroom術
100枚の中から2枚を選ぶlightroom術100枚の中から2枚を選ぶlightroom術
100枚の中から2枚を選ぶlightroom術Tatsuya Iwama
 
Reactive extensions入門v0.1
Reactive extensions入門v0.1Reactive extensions入門v0.1
Reactive extensions入門v0.1一希 大田
 
Photon Server Deep Dive - PhotonWireの実装から見つめるPhotonServerの基礎と応用
Photon Server Deep Dive - PhotonWireの実装から見つめるPhotonServerの基礎と応用Photon Server Deep Dive - PhotonWireの実装から見つめるPhotonServerの基礎と応用
Photon Server Deep Dive - PhotonWireの実装から見つめるPhotonServerの基礎と応用Yoshifumi Kawai
 
An Internal of LINQ to Objects
An Internal of LINQ to ObjectsAn Internal of LINQ to Objects
An Internal of LINQ to ObjectsYoshifumi Kawai
 
Railsチュートリアルの歩き方 (第4版)
Railsチュートリアルの歩き方 (第4版)Railsチュートリアルの歩き方 (第4版)
Railsチュートリアルの歩き方 (第4版)Yohei Yasukawa
 

Destaque (11)

Linqで画像処理
Linqで画像処理Linqで画像処理
Linqで画像処理
 
C#でこなすexcel課題
C#でこなすexcel課題C#でこなすexcel課題
C#でこなすexcel課題
 
ランク6の俺がパズドラについて語る
ランク6の俺がパズドラについて語るランク6の俺がパズドラについて語る
ランク6の俺がパズドラについて語る
 
XAML & XAML
XAML & XAMLXAML & XAML
XAML & XAML
 
100枚の中から2枚を選ぶlightroom術
100枚の中から2枚を選ぶlightroom術100枚の中から2枚を選ぶlightroom術
100枚の中から2枚を選ぶlightroom術
 
Rx入門
Rx入門Rx入門
Rx入門
 
LINQ基本のキ
LINQ基本のキLINQ基本のキ
LINQ基本のキ
 
Reactive extensions入門v0.1
Reactive extensions入門v0.1Reactive extensions入門v0.1
Reactive extensions入門v0.1
 
Photon Server Deep Dive - PhotonWireの実装から見つめるPhotonServerの基礎と応用
Photon Server Deep Dive - PhotonWireの実装から見つめるPhotonServerの基礎と応用Photon Server Deep Dive - PhotonWireの実装から見つめるPhotonServerの基礎と応用
Photon Server Deep Dive - PhotonWireの実装から見つめるPhotonServerの基礎と応用
 
An Internal of LINQ to Objects
An Internal of LINQ to ObjectsAn Internal of LINQ to Objects
An Internal of LINQ to Objects
 
Railsチュートリアルの歩き方 (第4版)
Railsチュートリアルの歩き方 (第4版)Railsチュートリアルの歩き方 (第4版)
Railsチュートリアルの歩き方 (第4版)
 

超Linq入門 実践編