C# 使用LINQ进行复选框验证

C# 使用LINQ进行复选框验证,c#,linq,C#,Linq,作为学习LINQ的一部分,我遇到了以下问题 具有N个复选框和一个按钮的windows窗体。仅当用户选中任何两个复选框时,才应启用该按钮。我正在尝试使用LINQ实现这一点,但未能达到预期的结果 我使用了以下代码,但仅在选中任何一个复选框时才起作用 btnAgree.Enabled = (from chkbox in Controls.OfType<CheckBox>() select chkbox).Any(b => b.Checked); btnAgree.Enabled=(

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

具有N个复选框和一个按钮的windows窗体。仅当用户选中任何两个复选框时,才应启用该按钮。我正在尝试使用LINQ实现这一点,但未能达到预期的结果

我使用了以下代码,但仅在选中任何一个复选框时才起作用

btnAgree.Enabled = (from chkbox in Controls.OfType<CheckBox>() select chkbox).Any(b => b.Checked);
btnAgree.Enabled=(从Controls.OfType()中的chkbox选择chkbox).Any(b=>b.Checked);
试试这个:

btnAgree.Enabled = ((from chkbox in Controls.OfType<CheckBox>() select chkbox where chkbox.Checked = true).Count >= 2)
btnAgree.Enabled=((从Controls.OfType()中的chkbox选择chkbox,其中chkbox.Checked=true)。计数>=2)
试试这个:

btnAgree.Enabled = ((from chkbox in Controls.OfType<CheckBox>() select chkbox where chkbox.Checked = true).Count >= 2)
btnAgree.Enabled=((从Controls.OfType()中的chkbox选择chkbox,其中chkbox.Checked=true)。计数>=2)
btnAgree.Enabled=(从Controls.OfType()中的chkbox选择chkbox)。计数(b=>b.Checked)>=2

你应该做这个把戏

btnAgree.Enabled=(从Controls.OfType()中的chkbox选择chkbox)。计数(b=>b.Checked)>=2


你应该做这个把戏

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

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

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

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

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

如果是这样,这应该可以做到:

btnAgree.Enabled = Controls.OfType<CheckBox>()
                           .Count(b => b.Checked) == 2;
btnAgree.Enabled=Controls.OfType()
.计数(b=>b.已检查)==2;

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

如果是这样,这应该可以做到:

btnAgree.Enabled = Controls.OfType<CheckBox>()
                           .Count(b => b.Checked) == 2;
btnAgree.Enabled=Controls.OfType()
.计数(b=>b.已检查)==2;

据我所知,
where
应该在
select
之前,而且无论如何
控件。OfType()
就足够了-不需要使用
语法中的所有
。当我在更正where子句后使用您的代码时,我开始学习一种新方法,通过LINQ将checked属性设置为true。谢谢:)不客气。还请注意,我是在System.Exception;)之前回答的据我所知,
where
应该在
select
之前,并且无论如何
控制.OfType()
就足够了-不需要使用来自
语法的所有
。当我在更正where子句后使用您的代码时,我开始学习通过LINQ将checked属性设置为true的新方法。谢谢:)不客气。还请注意,我是在System.Exception;)之前回答的