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 対応しました。
個人的には面白すぎて涙が出る。
こういう思い切ったネタって大好きです。
昔そういや、こんな構文をCωで見た気もするなぁ