Windows フォーム GroupBox に含まれる特定のラベルにプロパティを設定しようとして、以下のループを記述しました。これは問題なく動作しますが、(不要だと思います) 二重の foreach ネストがあるため、好きではありません。
これをより明確に書き直して、foreach を 1 つだけ使用し、Linq 式を組み合わせて使用しようとしましたが、GroupBox から Label へ、またはその逆のいずれかで、実行時に CastException ですべての試みが失敗します。
このループ構成を記述するための、より明確で、より効率的で、より読みやすい方法はありますか?
foreach (var gb in (from Control c in this.Controls where c is GroupBox select c)) foreach (Label tlbl in (from Control a in gb.Controls where a is Label && a.Tag != null && a.Tag.ToString() == "answer" select a)) tlbl.ForeColor = (tlbl.Name.Replace("lbl", "") == rb.Name) ? afterSelectColor : beforeSelectColor;
読みやすさは私の最高の目標です。それを念頭に置いて、書き直してみる価値はありますか?