はじめてのLINQ
LINQ Previewをダウンロードして実験君。ただ、日本語版VS2005β2には対応していないようなので、コマンドラインからちまちまコンパイルすることに。
using System; using System.Query; class Program { public static void Main () { var src = new int [] { 1, 2, 3, 4, 5, 6, 7, 8, 9 }; var dst = from n in src where n % 2 == 0 orderby n descending select n; foreach (var n in dst) Console.WriteLine (n); } } /* 結果 8 6 4 2 */
さっくり動きますね。なんだか凄そうに見えますが、コイツをC#2.0のコードで書くと、
using System; using System.Query; class Program { public static void Main () { int src = new int { 1, 2, 3, 4, 5, 6, 7, 8, 9 }; OrderedSequence<int> os = Sequence.OrderByDescending<int, int>( Sequence.Where<int>(src, delegate (int n) { return n % 2 == 0; }), delegate (int n) { return n; }); foreach (int n in os) Console.WriteLine (n); } }
意外と単純。イメージ的にはUnixのパイプに近いかな。
$ from n in src | where | orderby | select > dst
↑こんなのを想像してみてください。
そーいや、queryの並びがSQLと異なって(selectが最後に来ている)いますが、これについてヘジたんがビデオでコメントしていたけど、VB9のLINQってSQLの並びなんですよね。この辺は統一取れてないのかしら?(^^;