標準クエリ演算子

表計算ソフトがExcel一色ではなかった頃、大変マイナーなソフトで三洋電機のGOALというものがありました。計算はセルに計算式を埋め込むのではなく、独自のマクロを使います。

1
D = A*B {C<1000}

上の式はC列が1000以下の行に対して、D列にA列とB列を掛けたものを代入します。余り複雑なことはできませんでしたが、一つの式で複数行の処理ができて単純明快でした。

同様の処理をVisual Basicなどのプログラミング言語で行うとループで回す処理が必要になります。Visual Studio 2008では繰り返し処理を簡潔に書けるように標準クエリ演算子とシンタックスシュガーである.NET統合言語クエリ(LINQ)が導入されました。モデルになっているのはデータベースに使われるSQLで複数行の計算を一文で書けます。SELECTはフィルタリング、INSERTは挿入、DELETEは削除、UPDATEは更新を行います。

1
UPDATE TableName SET D=A*B WHERE C<1000

このうちLINQではSELECTを処理してくれます。そのため上に書いた式で「A*B WHERE C<1000」の複数行の結果を作り出すことはできても素直な方法ではDへの代入はできないので、最終的にはループを回して代入する必要があります。

Visual Visual Studio 2005で比較しています。

現在Visual Basicを使っているのは、記述は冗長だが読みやすいという点を買っています。Modula-2,DelphiなどPascalライクな文法を持つ言語が好みということもあります。