我在 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/