我有一个动态创建的 CheckBoxList
。在这个 CheckBoxList
中,我有一个嵌套的 foreach
循环用于验证用户输入。用户输入他或她的电子邮件地址。用户单击提交后,将创建 CheckBoxList
。如果用户的电子邮件与某个主题的订阅相匹配,则该主题旁边的复选框会被选中。我遇到的问题是将原始外部 foreach
与嵌套 foreach
相关联。
int i = 0;
foreach (Topic topic in result)
{
string topicName = topic.TopicArn.ToString().Split(':').Last();
ListItem li = new ListItem(topicName, topic.TopicArn);
checkBoxList1.Items.Add(li);
foreach (Subscription subscription in subs) // where topic equals current
// topic in original foreach?
{
if (txtEmail.Text == subscription.Endpoint)
checkBoxList1.Items[i].Selected = true;
}
i++;
}
我在想我也许可以使用 LINQ 向 nested
foreach 循环添加一个条件,但我还没有能够将它们整合在一起。
最佳答案
您必须先创建所有复选框,然后才能开始评估是否应选中它们。在上面的代码中,您创建了一个 Listitem,然后遍历所有订阅,这样它就会在该循环中超出范围,然后再在复选框列表中创建第二个 listitem。
foreach (Topic topic in result)
{
string topicName = topic.TopicArn.ToString().Split(':').Last();
ListItem li = new ListItem(topicName, topic.TopicArn);
li.Selected = subs.Any(s => s.Endpoint == txtEmail.Text && s.TopicArn == topic.TopicArn);
checkBoxList1.Items.Add(li);
}
关于c# - 嵌套在动态创建的 CheckBoxList 中的 foreach,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13958822/