C# 错误集合被修改;枚举操作不能执行。如何在选中列表框上的选定值后进行数据绑定?

C# 错误集合被修改;枚举操作不能执行。如何在选中列表框上的选定值后进行数据绑定?,c#,asp.net,data-binding,checklistbox,C#,Asp.net,Data Binding,Checklistbox,我使用以下代码选择下一个列表项或复选框中的第一个列表项: var calculateRate = cancellation.CancellationCalculateRates; foreach (ListItem item in chkListRate.Items) { chkListRate.DataBind(); >>> Error Collection was modified; enumerati

我使用以下代码选择下一个列表项或复选框中的第一个列表项:

        var calculateRate = cancellation.CancellationCalculateRates;
        foreach (ListItem item in chkListRate.Items)
        {
            chkListRate.DataBind(); >>> Error Collection was modified; enumeration operation may not execute.
            var cancel = ConverterHelper.To<int>(item.Value);
            item.Selected = calculateRate.Any(i => i.CancellationId.Equals(cancel));
        }
var calculateRate=cancellation.cancellationcalculates;
foreach(chkListRate.Items中的ListItem项)
{
chkListRate.DataBind();>>>错误集合已修改;枚举操作可能无法执行。
var cancel=将帮助转换为(项目值);
item.Selected=calculateRate.Any(i=>i.CancellationId.Equals(cancel));
}

如何在选中列表框上的选定值之后进行数据绑定?

正如错误消息所述,在枚举期间不能修改集合(
foreach
)。因此,不允许删除和插入<代码>复选框列表。数据绑定正在修改它,因此会导致错误

但不清楚你到底想做什么。您正在对每一项都进行数据绑定,这似乎毫无意义,不是吗?所以我的建议是删除
chkListRate.DataBind()来自循环:

foreach (ListItem item in chkListRate.Items)
{
    var cancel = ConverterHelper.To<int>(item.Value);
    item.Selected = calculateRate.Any(i => i.CancellationId.Equals(cancel));
}
foreach(chkListRate.Items中的ListItem项)
{
var cancel=将帮助转换为(项目值);
item.Selected=calculateRate.Any(i=>i.CancellationId.Equals(cancel));
}