狠狠撸

狠狠撸Share a Scribd company logo
road to Linqulien
超Linq入門 実践編
? 何時?
? いまでしょう(違
? 何処で?
? データ構造の加工?変換
? 例えば
? 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 での結果の確定

More Related Content

超Linq入門 実践編