C# 在C中使用控件进行并行迭代的foreach语句

C# 在C中使用控件进行并行迭代的foreach语句,c#,.net,winforms,linq,C#,.net,Winforms,Linq,我正在制作一个应用程序,试图将动态创建的文本框中的值存储在数据库中 我使用的代码是: CheckBox clickedBtn = sender as CheckBox; name = clickedBtn.Name; foreach (CheckBox c in panel1.Controls.OfType<CheckBox>()) { if (c.Checked) { foreach(TextBox cd in panel1.Controls.Of

我正在制作一个应用程序,试图将动态创建的文本框中的值存储在数据库中

我使用的代码是:

CheckBox clickedBtn = sender as CheckBox;
name = clickedBtn.Name;

foreach (CheckBox c in panel1.Controls.OfType<CheckBox>())
{
    if (c.Checked)
    {
        foreach(TextBox cd in panel1.Controls.OfType<TextBox>())
        {
            string val = cd.Text;

            if (val != "" && cd.Name == name)
            {
                con3.Open();

                SqlCommand cmd3 = new SqlCommand("insert into.....", con3);

                cmd3.ExecuteNonQuery();
                con3.Close();
            }
        }
    }
}
这段代码正在工作,但它只在数据库中输入上次选中的值,与选中的复选框数相同,我想发送所有选中相应复选框的文本框的值

基本上,我正在尝试运行foreach循环,使复选框和文本框同时运行,而不是在彼此内部运行。

remove name=clickedBtn.name;在顶部,如果c检查,则在内部执行


我给Damith打了+1,他的答案是正确的,只是你可以优化你的代码

foreach (var name in from c in panel1.Controls.OfType<CheckBox>() where c.Checked select c.Name)
{
   foreach (TextBox cd in panel1.Controls.OfType<TextBox>().Where(cd => cd.Text != "" && cd.Name == name))
   {
       con3.Open();
       SqlCommand cmd3 = new SqlCommand("insert into.....", con3);
       cmd3.ExecuteNonQuery();
       con3.Close();
    }
} 

您需要某种方式将复选框与文本框关联起来。据我所知,你的代码没有这样做——你的内部循环中没有使用c语言。你能告诉我怎么做吗?我试了很多,但找不到办法。或者我们有没有办法将foreach链接成文本框和复选框并行运行?非常感谢Damith。成功了!!我很高兴找到你对这个问题的建议,代码运行得很顺利!!谢谢!!
foreach (var name in from c in panel1.Controls.OfType<CheckBox>() where c.Checked select c.Name)
{
   foreach (TextBox cd in panel1.Controls.OfType<TextBox>().Where(cd => cd.Text != "" && cd.Name == name))
   {
       con3.Open();
       SqlCommand cmd3 = new SqlCommand("insert into.....", con3);
       cmd3.ExecuteNonQuery();
       con3.Close();
    }
}