こんにちは。
今日はRadioButtonのtextの取得についでです。


f:id:yufin:20150815162036p:plain

上のFormのとき、始めに私が書いたコードは、LINQなしだと、

if (radioButton1.Checked == true)
listBox1.Items.Add(radioButton1.Text);

if (radioButton2.Checked == true)
listBox1.Items.Add(radioButton2.Text);

if (radioButton3.Checked == true)
listBox1.Items.Add(radioButton3.Text);

でした。
まあ、radioButtonのtextを取得するという目的は達成できていますが、
radioButtonをFormで増やしたら、必ずif文を追加しなければならないという欠点がありました。

そこで、LINQで書き直してみました。

listBox1.Items.Add(this.groupBox1.Controls.OfType().Single(c => c.Checked == true).Text);


これだと、ソースコードが短くなる上に、groupBox1に何かコントロールを増やしても、コードを書き直し・追加が不要になります。