var ABC = new[] {
new { id = 10, name = "naka", sex = "1" },
new { id = 20, name = "carbo", sex = "9"},
new { id = 30, name = "umebayashi", sex = "1"},
new { id = 40, name = "naoko", sex = "2"},
new { id = 50, name = "episteme", sex = "1"},
};
var 結果 = from x in ABC
where x.sex == "1"
select x;
foreach (var xx in 結果)
{
Console.WriteLine(xx.id + "\t" + xx.name + "\t" + xx.sex);
}
Console.ReadLine();
この、ABC, 結果, xxそれぞれ違う型だけど、推論してくれてるのがポイント。
ABCはAnonymousType<int, string, string>[]のようなもの。
結果はIEnumerable<int, string, string>のようなもの
xxはAnonymousType<int, string, string>のようなもの
じっさいにはちょっとマジックなものが入ってそうですが。
下の方のforeachを実はこう書きたい。
foreach (var xx in 結果)
{
Console.WriteLine(xx.id + "\t" + xx.name + "\t" + xx.sex);
}
Array.ForEach<typeof(結果)>(結果, xx => Console.WriteLine(xx.name));
でも残念ながらこれはできない。結果がtypeofできないから。うーん微妙に不便。