设置单选按钮由其文本从存储的数据集中为 C# 中的 WinForms 值检查

Set radio button checked by its Text from a stored Dataset's value for WinForms in C#

我有以下代码,用于根据数据集中的存储值,在 Windows 表单中将哪个单选按钮标记为 checked

int rowNum = 0; //Row# is defined by system usage; value = 0 for example purposes
String storedValue = Convert.ToString(myDS.Tables["myTableName"].Rows[rowNum]["myColumn"]);

foreach (RadioButton button in this.myRBGroupBox.Controls) {
       if (button.Text == storedValue) {
         button.Checked = true;
       }
}

这是解决这个问题的好方法吗?它是 lambda 的替代品吗? 感谢您的帮助。

好的,让我们使用 lambda 来做同样的事情而不需要显式循环。

int rowNum = 0; 
string storedValue = Convert.ToString(myDS.Tables["myTableName"].Rows[rowNum]["myColumn"]);
RadioButton rb = myRBGroupBox.Controls
                             .OfType<RadioButton>()
                             .FirstOrDefault(x => x.Text == storedValue));
if(rb != null) rb.Checked = true;

好点了吗?好吧,您的原始代码有一些改进。
例如,OfType<RadioButton> 保证只从 GroupBox 的控件中获取单选按钮,而 FirstOrDefault 在找到第一个符合条件的单选按钮时停止枚举。
但是所有这些改进也可以在 'normal' code

中完成
foreach (Control ctrl in myRBGroupBox.Controls)
{
    RadioButton rb = ctrl as RadioButton;
    if (rb != null && rb.Text == storedValue) {
        rb.Checked = true;
        break;
    }
}

我个人觉得最后一个更具可读性。