しかし、
var con = this.Controls.OfType<TextBox>().Select(c => c);
foreach (Control ctr in con) {
textBox1.Text += ctr.Name + "\n";
}
と
foreach (Control ctr in this.Controls) {
if (ctr is TextBox) {
textBox1.Text += ctr.Name + "\n";
}
}
の、どちらが分かりやすくて保守しやすいかが問題だな。

こんなサンプルじゃLINQには役不足なのかな。