我想要完成的是按供应商ID对我的列表进行分组。迭代该列表计算东西等,并在完成后通过该列表保存并清除列表并重新开始。错误是:“集合被修改后的枚举操作可能无法执行.c#”。现在从googling我只是总结,然后通过该组保存并清除列表冲洗并重复。我认为清除会清空列表并允许重用。
错误 - “集合被修改枚举操作可能无法执行.c#”
group正在对传入此方法的列表进行分组。
我创建了计数以查看我有多少组(6)。
ProcessSpecialOrders接收分组列表,po和总数。
这里发生的事情是这将通过第一组进行一次。保存到DB然后它将抛出错误。如果我刷新页面或检查数据库,我可以看到grop已保存。
List<xxxxx> specialOrderList = new List<xxxxx>();
var group = from supplier in list group supplier by supplier.SupplierId;
var count = group.Count();
foreach (var grp in group.ToList())
{
specialOrderList.Clear();
foreach (var g in grp.ToList())
{
var orderItemList = new MOrderItem();
if (g.ItemType == "SD")
{
xxx.Id = 0;
xxx.ItemId = g.Id;
xxx.OnHandQty = g.OnHand;
xxx.ItemNo = g.ItemNumber;
xxx.ThisQty = 0;
xxx.NetCost = itemPrice.Where(x => x.ItemId == g.Id).Sum(l => (decimal?)l.NetCost * 1) ?? 0.0M;
xxx.ExtendedCost = 123.99M;
xxx.OnHandWhenBuildQty = 0;
xxx.OnOrderQty = matcoOrderItem.Where(x => x.ItemId == g.Id).Sum(x => (int?)x.ThisQty) ?? 0;
specialOrderList.Add(orderItemList);
}
}
ProcessSpecialOrders(specialOrderList, poNo, specialOrderTotal);
}