作为学习LINQ的一部分,我遇到了以下问题。
带有N个复选框和一个按钮的窗体。只有当用户检查\选中任意两个复选框时,才应启用该按钮。我试图使用LINQ实现这一点,但无法实现所需的结果。
我使用了以下代码,但仅在选中任何一个Checkbox时才有效。
btnAgree.Enabled = (from chkbox in Controls.OfType<CheckBox>() select chkbox).Any(b => b.Checked);
答案 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;