C#3.0の匿名型を使ってて、ふと思ったこと


匿名型はこんな風に書ける


var me = new { Name = "yuji", Age = 26, Like = "C#" };
プロパティ名を書いて、値を指定するだけ。

プロパティ名は省略できる。
省略すると同じプロパティ名になる。


var me2 = new { Name = me.Name , me.Age };//Ageが省略したやつ

もちろん、ローカル変数でもおk


var name = "yuji";
var me3 = new { name };

だったら、こうしたくない?


var Name = "yuji";
var me4 = new { Name };

ローカル変数をPascal 形式で書きましたが何か?(^ω^)

駄目ですか、そうですか……

Select文の中とかで書きたくならないですか?


var data = new[]
{
new { Name = "yuji", Age = 26, Life = 100},
new { Name = "adeton", Age = 3, Life = 9999 }
};

var sum4 = data.GroupBy(d => d.Age/10)
.Select(gp =>
{
var Life = gp.Sum(d => d.Life);
return new
{
Life,
Title = string.Format("{0}代は、合計{1}です。", gp.Key*10, Life),
};
});

ないですか、そうですか、そうですね、名前書くぐらいサボんなって話ですよね。

そもそも、同じ名前にならない事の方が多い(正しい)ですよね。(↑だとTotalLifeとか?)

LINQでたくさん帳票作ってたら、少しでも手抜きしたくなっただけですorz