【T2c】LINQ(3/4)
プロジェクトタイプ | C#コンソールアプリ※ |
---|---|
プロジェクト名 | T2c |
ソリューション名 | PIT2 |
ターゲットフレームワーク | .NET 8.0(長期的なサポート) |
最上位レベルのステートメントを使用しない | 使用する(チェックオフ) |
※ 「コンソールアプリ(.NET Framework)」ではないので注意せよ!
注意
- 本ページの作業内容は 前のページまでの続き になっていることに注意せよ.
- 先に前のページまでをすべて読み,指示されている作業を済ませてから本ページを読むこと.
- プロジェクトの作成作業については従来の絞り込み処理を参照せよ.
2c-3. LINQを用いた絞り込み処理
LINQを用いると同じ絞り込み処理をより簡便に実装することができる.LINQを使用するには,
System.Linq
名前空間のクラスが必要なので,LINQを使用するコードの冒頭に_のような
usingディレクティブを追記する必要がある.
|
|
ただし.NET 6.0以降ではこのusingディレクティブは, 暗黙的に追加されているusingディレクティブに含まれているため 明示的に記述する必要はない.
ではリスト2c-2-2と同じ絞り込み処理をLINQを使って書き換えてみよう. Program.cs を_に示すようにに書き換える.
|
|
書き換えたら実行してみよう.図2c-2-1と同じ実行結果が得られるはずである. _の
|
|
の部分がLINQの式である.見ての通りSQLのSELECT文に非常によく似た形になっている. SELECT文との違いは句の順序である.SQLのSELECT文とLINQの式の構文的な対応関係を_に示す.
各句の書き方にも多少の違いがある点に注が必要である.FROM句にあたる部分は,
LINQではfrom
となる.
範囲変数名
in リスト
範囲変数名
は,以降の where や select 内で条件などを記述するのに使用する
仮置きの変数名である.これは任意の名前を使用してよい._ではs
としている.
リスト
の部分にはIEnumerable
where の部分では絞り込み条件を指定するが,これはC#の通常の条件文を使用することができる.
先ほどの s.Birthday.Year <= 2000
という条件式に,たとえば「誕生月が3月である」という条件を
加えたければ && 演算子を用いればよい.実際に Program.cs に_に示す内容を追記してみよう.
|
|
1: 想影 真心 (2000-03-08) 5: 石凪 萌太 (2000-03-08) 15: 嵯峨埜 鵜鷺 (2000-03-25) 4: 闇口 崩子 (2000-03-22) 9: 江本 智恵 (2000-03-28) 6: 七々見 奈波 (1980-03-11)
また,SQLのSELECT文ではORDER BY句を用いて結果の表をソートすることができるが,LINQでも同等のことが可能である. Program.csに_に示す1行を追記してみよう.
|
|
実行結果は_のようになる.各学生のIDの昇順でソートされていることがわかるだろう.
1: 想影 真心 (2000-03-08) 4: 闇口 崩子 (2000-03-22) 5: 石凪 萌太 (2000-03-08) 6: 七々見 奈波 (1980-03-11) 9: 江本 智恵 (2000-03-28) 15: 嵯峨埜 鵜鷺 (2000-03-25)
_の orderby の行をorderby s.ID descending
(IDの降順)やorderby s.Birthday
(誕生日の日付順)
などに変更して,結果がどのように変化するかを試してみよう.