標準クエリ演算子 クエリ式関係

標準クエリ演算子(クエリ式関係) (C# によるプログラミング入門)
http://ufcpp.net/study/csharp/sp3_stdquery.html
概要、サンプルデータ、クエリ式の構成要素、クエリ変換とfrom、基本、Cast、Select、透過識別子とlet、
Where, SelectMany, Join GroupJoin, OrderBy ThenBy, GroupBy, まとめ


標準クエリ演算子には、クエリ式で表せるものと、メソッド呼び出しの形でしか表せないものがある。
クエリ式は、from, where, select, group..by, into, orderby, join, letといった句からなる。
クエリ式は、上から順にコンパイラによってメソッド呼び出しに変換される。

var b =
  from p in a
  select p.X into x
  where x > 2
  select x;
// ↓
var b = a
  .Select(p => p.X)
  .Where(x => x > 2);


Cast from直後に型を指定できる

var b =
  from int p in a  //   from p in a.Cast<int>()と同じ
  select p;


Select 出力形式の指定

var b =
  from p in a
  select p.X; // X だけ取り出す。
// ↓
var b = a.Select(p => p.X);

selectのあとにクエリ式を続けたい場合はintoを使う


let クエリ式中で計算した値を変数に格納


Where


SelectMany 1対多の射影
selectだと配列のリストになるところを、select manyだと1つのリスト(IEnumerable)になる。
fromを二重に使うとSelectManyに変換される

var b =
  from p in a
  where p.X > 2
  from q in p.Z
  select new { p.X, Z = q };


Join, GroupJoin データシーケンスの結合


OrderBy, ThenBy データシーケンスの整列
OrderByDescending、ThenByDescendingだと降順。


GroupBy 指定したキーに対し値の同じものをグループ化