【T2c】LINQ(4/4)
プロジェクトタイプ | C#コンソールアプリ※ |
---|---|
プロジェクト名 | T2c |
ソリューション名 | PIT2 |
ターゲットフレームワーク | .NET 8.0(長期的なサポート) |
最上位レベルのステートメントを使用しない | 使用する(チェックオフ) |
※ 「コンソールアプリ(.NET Framework)」ではないので注意せよ!
注意
- 本ページの作業内容は 前のページまでの続き になっていることに注意せよ.
- 先に前のページまでをすべて読み,指示されている作業を済ませてから本ページを読むこと.
- プロジェクトの作成作業については従来の絞り込み処理を参照せよ.
2c-4. LINQとデータ抽出
LINQを用いると,絞り込みだけでなく単一のデータの抽出も行うことができる. つまり絞り込みによって多数のデータから条件に合う複数のデータを抽出するのではなく, RDBにおける主キーのような一意性を問う条件を用いて単一のデータを取り出す,ということである.
たとえば学生のリストの中からIDが8である学生を抽出してみよう. Program.csを_のように書き換えてみよう.
|
|
実行結果は_のようになる.
8: 葵井 巫女子 (2002-06-01)
.FirstOrDefault()メソッドは, LINQの式に対して使用できるメソッドの一つで,絞り込み結果の最初の要素を返すメソッド(拡張メソッド)である. 絞り込み結果が空である場合には,この場合は null が返される.
.FirstOrDefault()
メソッドのほかにも,このような補助用のメソッドがいくつか用意されている.
よく使用するものを_にその一例を示す.
メソッド | 作用 |
---|---|
.Min() | 結果のうち最小のものを返す. |
.Max() | 結果のうち最大のものを返す. |
.First() | 結果のうち最初の要素を返す. |
.FirstOrDefault() | 結果のうち最初の要素を返す.結果が空ならばその型のデフォルト値を返す. |
.Last() | 結果のうち最後の要素を返す. |
.LastOrDefault() | 結果のうち最後の要素を返す.結果が空ならばその型のデフォルト値を返す. |
.Skip() | 結果のうち最初のn 個を飛ばす. |
.Take() | 結果のうち最初のn 個のみを受け取る. |
さらに, select の部分を指定することによってコレクションを別の型のコレクションに変換することができる. これは関係代数でいえば射影に相当する操作である. たとえば学生のリストを,各々の学生の誕生日からなる DateTime 型のコレクションに変換してみよう. Program.csを_のように書き換えてみよう.
|
|
実行結果は_のようになる.
1998-09-30 2003-01-10 2000-03-08 2001-11-21 2000-03-08 2000-04-10 2002-06-01 2000-03-25 2000-03-22 2003-06-12 2001-10-03 2000-03-28 1999-07-13 2002-05-15 1980-03-11 2003-02-11
LINQの式の中で select s.Birthday
と指定したことで,Student
のコレクションが DateTime 型の
コレクションに読み替えられた.
このほかにもLINQには様々な応用方法があるが,ほかは必要となったときに紹介することにしよう.
ここまでの動作を確認したら三つ目のチュートリアルは完了である. 以降の作業における混乱を防ぐため,次に進む前に Visual Studio のエディタをすべて閉じておこう.Visual Studio のいずれかのエディタのタブを右クリックして 「すべてのドキュメントを閉じる」をクリックすれば,エディタをすべて閉じることができる.