LINQのクエリ実行後の処理を解説!

IT関連
kai
kai

サイト管理人の’kai’です。

kai君、今日は何をするの?

ポチ
ポチ
kai
kai

今日は、IT技術のLINQについて教えるよ!
これは、僕が数年前にVB.NETを用いた開発で苦しんだ時のメモを基に書いているから少し古い内容もあるかもしれないから参考程度にしてね。

kai
kai

それでは、先ずはLINQについて説明しよう!

LINQとは

LINQとは、統合言語クエリ (Language INtegrated Query)の略語となります。

LINQは、「.NET framework」で様々な種類のデータ集合に対して標準化された方法でデータを問い合わせることを可能にするために、プログラミング言語に統合された機能のことを言います。

kai
kai

難しく書いてありますが、
要は「.NET」系のプログラミング言語(※ここでは、vb.net言語とする。)で様々なデータの集まりに対して、共通的に対応することが出来るようになったということです。
今回は、このデータの集まりをDBデータとして考えていきます。


kai
kai

それでは、実際に見ていきましょう!

1行のみ処理する場合

kai
kai

先ずは、データ1行のみを処理する場合です。

Dim query = (From ~).FirstOrDefault

1行のみ処理する場合は、クエリに対して「FirstOrDefault」とすることで取得出来ます。

もし、SELECTしてくる項目が1項目のみの場合は、その値がqueryに格納されます。取得項目がNullの場合は、既定値が格納されます。(Integer型となる項目の場合は(0)が格納され、String型となる項目の場合は、(Null)が格納されます。)

また、SELECTしてくる項目が複数項目の場合は、テーブル型として取得されます。取得結果が存在しない場合は、Nothingで判定して対応する。

複数行処理する場合

kai
kai

次は、複数行を処理する場合です。

Dim query = (From ~)

For Each item In query
    Value = item.Value
End For

取得結果を基に、「For Each」文を使用して各行を処理していきます。

ラムダ式について

kai
kai

最後に、ラムダ式という機能を開設します。

Dim query = (From name In Table Select name)

上記の実行結果を基に、条件での絞込みを実施したい場合にラムダ式という物を用います。

上記の実行結果の項目に”Value”という項目が存在し、その項目が 1 の場合を絞込みたい場合はいかのようになります。

query = query.Where(Function(x) x.value.Equals(1))