技術をかじる猫

適当に気になった技術や言語、思ったこと考えた事など。

C#3.0 が何気に良い意味で気持ち悪い(3回目)

LINQ が凄いことになっている。
百聞は一見に如かず。
とにかく見ると笑ってしまう。

var 兵器全般 = new[] { 
    new {兵器ID=0, 兵器名="FA-MAS",         カテゴリ="アサルトライフル"},
    new {兵器ID=1, 兵器名="FN P90",         カテゴリ="サブマシンガン"},
    new {兵器ID=3, 兵器名="Desert Eagle",   カテゴリ="ハンドガン"},
    new {兵器ID=4, 兵器名="Pfeifer Zeliska",カテゴリ="ハンドガン"},
    new {兵器ID=5, 兵器名="A-10",           カテゴリ="攻撃機"},
    new {兵器ID=6, 兵器名="F-14",           カテゴリ="戦闘機"},
    new {兵器ID=7, 兵器名="F-22",           カテゴリ="戦闘機"},
    new {兵器ID=8, 兵器名="Su-27",          カテゴリ="戦闘機"},
    new {兵器ID=9, 兵器名="心神",           カテゴリ="戦闘機"},
    new {兵器ID=10,兵器名="Tu-160",         カテゴリ="爆撃機"},
};

var 戦闘機 = from p in 兵器全般
          where p.カテゴリ == "戦闘機"
          orderby p.兵器ID
          select p;
foreach (var dat in 戦闘機)
{
    Console.WriteLine("id : {0}  {1}  type : {2}"
        ,dat.兵器ID,dat.兵器名,dat.カテゴリ);
}

正に、「何じゃこりゃぁあああ」
しかもコンパイルして走るこの気持ち悪さ。

匿名型暗黙型付けイニシャライザを使い、DB(つっても今回はリテラル)を表現。
そして、ラムダ式としての機能も使い、SQLまがいなコードを直接記述できる気持ち悪さ。

C# 3.0 の目玉となる機能、クエリ式query expression)。

データベースサーバ接続用や XML リーダー/ライタークラスも LINQ 対応しました。

個人的には面白すぎて涙が出る。
こういう思い切ったネタって大好きです。

昔そういや、こんな構文をで見た気もするなぁ