计算复选框的计数

S. *_*aia 1 c# asp.net code-behind

我有多个单独的复选框(50).

像这样:

<asp:CheckBox runat="server" ID="chkBirthDate" />
Run Code Online (Sandbox Code Playgroud)

我需要知道用户选择了多少复选框(Count).如果他选择了超过3个我让他通过,如果不是我给他一个错误信息.

提前致谢!

Rio*_*ams 5

LINQ方法

您可以利用LINQ的查询功能,使用该OfType<T>()方法获取所有单独的CheckBox控件,然后使用Count()调用查看实际检查的数量:

// Get the number of CheckBox Controls that are checked
var checkedBoxes = Form.Controls.OfType<CheckBox>().Count(c => c.Checked);
// Determine if your specific criteria is met
if(checkedBoxes > 3)
{
      // You shall pass!
}
else 
{
      // None shall pass
}
Run Code Online (Sandbox Code Playgroud)

您需要确保通过包含以下using语句来引用LINQ以使其正常工作:

using System.Linq;
Run Code Online (Sandbox Code Playgroud)

迭代循环方法

或者,您可以简单地循环并通过foreach循环相应地增加计数,如下所示:

// Store your count
var checkedBoxes = 0;
// Iterate through all of the Controls in your Form
foreach(Control c in Form.Controls)
{
    // If one of the Controls is a CheckBox and it is checked, then
    // increment your count
    if(c is CheckBox && (c as CheckBox).Checked)
    {
        checkedBoxes++;
    }
}
Run Code Online (Sandbox Code Playgroud)

示例(带输出)

你可以在这里找到一个完全重现的GitHub Gist,并在下面演示:

在此输入图像描述