使用LINQ进行复选框验证

时间:2011-02-16 07:53:23

标签: c# linq

作为学习LINQ的一部分,我遇到了以下问题。

带有N个复选框和一个按钮的窗体。只有当用户检查\选中任意两个复选框时,才应启用该按钮。我试图使用LINQ实现这一点,但无法实现所需的结果。

我使用了以下代码,但仅在选中任何一个Checkbox时才有效。

btnAgree.Enabled = (from chkbox in Controls.OfType<CheckBox>() select chkbox).Any(b => b.Checked);

4 个答案:

答案 0 :(得分:2)

btnAgree.Enabled = (from chkbox in Controls.OfType<CheckBox>() select chkbox).Count(b => b.Checked) >= 2;

应该做的伎俩!

答案 1 :(得分:1)

试试这个:

btnAgree.Enabled = ((from chkbox in Controls.OfType<CheckBox>() select chkbox where chkbox.Checked = true).Count >= 2)

答案 2 :(得分:0)

Count可以返回已选中复选框的数量:

btnAgree.Enabled = (from chkbox in Controls.OfType<CheckBox>() select chkbox).Count(b => b.Checked) >= 2;

答案 3 :(得分:0)

当且仅当选择了 2 复选框时,您是否希望Linq表达式返回true?

如果是这样,这应该可以解决问题:

btnAgree.Enabled = Controls.OfType<CheckBox>()
                           .Count(b => b.Checked) == 2;