已修改此枚举器绑定的列表。只有在列表不更改时才能使用枚举器

时间:2016-06-18 15:56:40

标签: c# foreach

所以我在#34;"中出现了这个错误。在foreach周期和我上网但我没有找到任何答案或理解它,这是代码。

foreach (string items in lstitems.Items)
        {
            connection.Open();
            OleDbCommand comando = new OleDbCommand();
            comando.Connection = connection;

            string[] caracteresnastring = items.Split(new char[] { ',' }).ToArray();
            string codproduto = caracteresnastring[0];
            string nome = caracteresnastring[1];
            int quantidade = Convert.ToInt32(caracteresnastring[2]);
            decimal preco = Convert.ToDecimal(caracteresnastring[3]);

            int tamanho = Convert.ToInt32(caracteresnastring[4]);
            string total = caracteresnastring[5];
            lstitems.Items.Add(txtcodproduto.Text + "," + txtnomeprod.Text + "," + txtquantidade.Text + "," + txtpreco.Text + "," + txttamanho.Text + "," + total);



            comando.CommandText = "INSERT INTO detalhes_encomendas_fornecedores (cod_encomenda_forn, cod_produto,quantidade,tamanho, total) VALUES('" + codencomendaforn + "','" + codproduto + "', '" + quantidade + "', '" + tamanho + "', '" + total + "'); ";
            comando.ExecuteNonQuery();
            connection.Close();

        }

1 个答案:

答案 0 :(得分:2)

当您使用List进行迭代时,您无法修改foreach

相反,您可以使用正常的for循环。

示例:

foreach(int item in mylist)
{
    if (item % 2 == 0)
        mylist.Remove(item); // Error here

    Console.WriteLine(item);
}

但你可以:

for(int i = 0; i < mylist.Count; i++)
{
    if (mylist[i] % 2 == 0)
    {
        mylist.RemoveAt(i);
        i--;
        continue;
    }

    Console.WriteLine(mylist[i]);
}