所以我在#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();
}
答案 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]);
}