从列表中保存项目组

时间:2016-08-15 15:51:07

标签: c# list

我想要完成的是按供应商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);
        }

0 个答案:

没有答案