c# - 嵌套在动态创建的 CheckBoxList 中的 foreach

标签 c# asp.net .net

我有一个动态创建的 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/

相关文章:

c# - ActionExecutingContext ActionDescriptor 不包含 ActionName 和 MethodInfo

c# - 事务中的 EF 更新窗体 View

c# - WebApi 文件读取访问被拒绝

c# - 如何在 C# 中读取 SNMP MIB 文件?

javascript - Xamarin 和 Telerik 平台有什么区别

c# - 在 Lambda 中实现 "where in"子句?

javascript - 如何在引用 C# 函数的 Google 可视化中包含 JavaScript 变量

asp.net - MiniProfiler : System. 出现错误 Web.Routing.UrlRoutingModule 未实现 IHttpHandlerFactory

asp.net - Recaptcha 在 PostBack 期间消失

c# - 是否可以简单地知道我的连接字符串是否加密?