以下のようにC#で次のコードを使用しています。
var result = (from o in db.tblOrderMasters
join od in db.tblOrderDetails on o.order_id equals od.orderdetails_orderId
join c in db.tblCountryMasters on o.order_dCountry equals c.country_id
join cu in db.tblCustomers on o.order_Custid equals cu.cust_id
where o.order_id == orderid && o.order_active == true && o.order_IsDeleted == false && (o.order_status == 2)
select new
{
Code = o.order_code,
Name = o.order_dFirstName + " " + o.order_dLastName,
Quantity = od.Quantity,
[...snip...]
}).ToList();
var Qresult = result;
try
{
foreach (var r in result)
{
if (r.Quantity > 1)
{
for (int i = 1; i < r.Quantity; i++)
{
Qresult.Add(r);
}
}
}
}
コレクションが変更されました。列挙操作が実行されない場合があります。
このエラーに関連する他の回答を読むと、反復中にリストを変更することはできないと言っていますが、私のコードのようにリストを変更しているのresult
ではなく、新しいリストを変更しQresult
てメインを反復しているresult list
ため、なぜこのエラーが発生するのかやってくる ?
ここでもう1つ言いたいのは、使用するquickwatch
と、結果項目にもこの行によって追加されていることがわかるということです
Qresult.Add(r);
しかし、アイテムをQresult
追加しているので、なぜアイテムが追加されたのかresult