LINQ

ハローワールド、プログラマのマツノブです。

社内製のツールを作っているとDBを使うほどじゃないけどデータ集計をしたいと思うことってありますよね?

そんなときは今回紹介するLINQがとても便利です。

LINQとは

統合言語クエリ (Language INtegrated Query; LINQ, リンクと発音する) とは、.NET Framework 3.5において、様々な種類のデータ集合に対して標準化された方法でデータを問い合わせること(クエリ)を可能にするために、言語に統合された機能のことである。開発ツールはVisual Studio 2008から対応している。

https://ja.wikipedia.org/wiki/統合言語クエリ

Wikiより

つまり、.NET Framework環境でDB的なクエリによるデータ集計ができる機能ということですね。

早速使っていきましょう。

今回はC#でのやり方を紹介していきます。

 

上記のようなデータ配列があった場合で考えてみましょう。

 

LINQのメソッドは配列やLIST型の拡張メソッドとして実装されています。

今回使用した各メソッドは

  • Where
    条件にマッチしたものを抽出する。
  • OderBy/OrderByDescending
    昇順/降順でソートする。
  • First
    リストの先頭を取得する。
  • Average
    値の平均を取得する。

となっています。

上記のような拡張メソッドの他にもSQL風味のクエリ式による記述が可能です。

AverageやFirstといった一部のメソッドにはクエリ式がないものもあります。

 

前述したとおりLINQは.NET Frameworkの機能なのでDBやSQLiteのような環境構築なしに利用することができます。
みなさんもDBを使うほどではないデータ集計に利用してみてください。

最後にLINQを使う上で役立つTIPSを紹介して今回は終わりです。

OderBy+Firstを高速に利用する

と記述した場合

と記述した場合と同じ結果を得ることができますが、
前述の場合先頭が確定した段階でソートが中止されるため後述より高速に処理することができます。

2次元配列を1次元配列にする

 

XXX_Collection 型でLINQを使用する
MatchCollection や DataGridViewRowCollection にはLINQの拡張メソッドが用意されていないためそのままではLINQを利用することができません。
ですが Cast メソッドを使うことで配列に変換しLINQを利用することが可能になります。

 

(Visited 373 times, 1 visits today)

コメント投稿は締め切りました。