これまで、メソッド、クラス、インスタンス、カプセル化、プロパティ、継承、オーバーライド、コレクション、ラムダ式などを順に紹介してきました。今回は、「LINQ」を紹介させていただきます。
【C#入門】クラスとは?役割とVisual Studioでの作り方を紹介
【C#入門】インスタンスとコンストラクタとは?
【C#入門】カプセル化とは?アクセス修飾子の種類と使い方を紹介
【C#入門】プロパティとは?SetとGetを使った書き方をご紹介
【C#入門】継承とは?役割と使い方をご紹介
【C#入門】Collection(コレクション)とは?LIST型の使い方をご紹介
LINQとは
LINQ(リンク)はC#3.0のバージョンから導入された仕組みで、配列やコレクション、データベースに格納されているデータをとても簡単に整理できる仕組みです。条件に当てはまるデータを取り出したり、合計値を算出したり、などができます。
私は普段の仕事でSQLを使い「今日の販売実績」のレポートを作成したり、「原価の情報を抜き出し・加工」したりすることが多いですが、C#をもとにしたアプリでは、LINQを使います。
SQLとLINQでは、データベースからデータを抽出・加工するという「やりたいこと」は同じですが、書き方が少し違います。ただ、似ている部分も多いので、SQLを既にご存じの方にとっては取っつきやすいのではないかと思います。
それでは早速LINQの種類とプログラム例をご紹介いたします(^^)
LINQの種類
先ほど、配列やコレクション、データベースに格納されているデータを簡単に整理する仕組みとして、LINQを利用するとご紹介しました。もちろん、LINQを使わずに、For やForeachを利用して書くこともできます。 どちらを使うかは好みかもしれません。
そんなLINQですが、書き方としては「クエリ構文」と「メソッド構文」の2種類あります。
クエリ構文とメソッド構文は意味的には同じものですが、多くの人は、クエリ構文のほうがシンプルで読みやすいと感じるようです。
一方で、メソッド構文でしか実現できない処理があることや、他の言語への汎用性があることからメソッド構文を好む方もいるようです。前回紹介したラムダ式については、メソッド構文で使います(^^)
では、実際の書き方についてみていきましょう。
クエリ構文
クエリ構文では、SQLと同じように、
Select(何をどのように表示するか)
From(どこからデータを取ってくるか)
Where(どのような条件でとってくるか)
Group by (どのようにグループ化するか)
Order by(どのような順番で表示するか)
を命令します。ただし、SQLと順番が違います。
■クエリ構文の書き方
Linqを利用する場合はname space "using System.Linq" に含まれているので、次のように宣言をする必要があります。
メソッド構文
クエリ構文と同じように、得点をscoresに格納して、そこから80点以下の点を全て表示させるというクエリを作成しました。
条件に合った要素だけ取り出す場合は、Whereメソッドを利用します。
その中で、前回の記事で紹介したラムダ式を使って"80点以下"を表現しています。
引数 =>戻り値(n <=80)の書き方ですね。
ラムダ式について復習したい方はこちらを参考にしてください。
クエリ型・メソッド型両者において、取り出した値はvar型に格納します。var型はint型やfloat型のように特定の型を表すものではなく、代入された値によってコンパイラが自動的に判断してくれます。
メソッド型について、さらに知りたい!という方はよく使うメソッド型について紹介しているので、是非こちらの記事を参考にしてください^^
ひとこと
いかがでしたでしょうか。LINQにはクエリ型とメソッド型があることと実際の書き方について紹介させていただきました。
今回の説明は「確かな力が身につくC# 「超」入門」を参考にさせていただきましたが、「もっと前から読んでおきたかった!」と痛感しています、、。もし、C#について学び始めたという方は是非参考にしてみてください!(2020年7月に出版された新書です(^^)
他にも、C#関連の記事を書いていますので是非参考にしてください!
【C#入門】クラスとは?役割とVisual Studioでの作り方を紹介
【C#入門】インスタンスとコンストラクタとは?
【C#入門】カプセル化とは?アクセス修飾子の種類と使い方を紹介
【C#入門】プロパティとは?SetとGetを使った書き方をご紹介
【C#入門】継承とは?役割と使い方をご紹介
【C#入門】Collection(コレクション)とは?LIST型の使い方をご紹介