c# - 如何在 C# 中将 lambda 表达式与 asp.net DataList 一起使用

标签 c# asp.net lambda

我在 aspx 文件上创建了一个 DataList,其中包含基于从数据库中提取的数据重复的复选框控件。

我想获取 DataList 项目并处理它,我已经使用了 foreach 循环,但我想使用 lambda 选择和过滤项目。

我无法将 DataList.items 转换为列表或数组。有 DataList.items.CopyTo 但它复制到 Array 对象并且无法转换为 DataListItem [] 数组。

这是已经完成的:

int count = 0;

foreach (DataListItem item in weaknesses.Items)
{
    CheckBox weakness = (CheckBox)item.FindControl("cbWeakness");
    if (weakness.Checked)
    {
        count++;
    }
}

这就是我想要做的:

count = weaknesses.Items.Where(i => ((CheckBox)i.FindControl("cbWeakness")).checked).Count();

最佳答案

你可以用这个 lambda 来做到这一点。

int count = DataList1.Items.Cast<DataListItem>().Where(x => ((CheckBox)x.FindControl("CheckBox1")).Checked).Count();

数据列表

<asp:DataList ID="DataList1" runat="server">
    <ItemTemplate>
        <asp:CheckBox ID="CheckBox1" runat="server" />
    </ItemTemplate>
</asp:DataList>

关于c# - 如何在 C# 中将 lambda 表达式与 asp.net DataList 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57675829/

相关文章:

c# Excel 跳过第一行?

javascript - 直接从 AJAX 调用代码隐藏函数,无需页面加载

scala - 在 Scala 中指定 lambda 返回类型

c# - 为什么 DateTime.MinValue 不能用作 C# 中的可选参数

c# - 类型转换会创建新对象吗?

c# - 索引超出范围。必须为非负数且小于集合的大小。参数名称 : index

c#-4.0 - 表达式等于

html - 从 MVC 中的 lambda 渲染 Html

c# - 圆形边缘边框被边框顶部的文本框剪裁

c# - 在 c# 中为 trello api 硬编码登录凭据