首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >发票托收修改IGrouping

发票托收修改IGrouping
EN

Stack Overflow用户
提问于 2015-12-21 06:36:15
回答 1查看 54关注 0票数 1

我有一个List<IGrouping<string, InvoiceCount>>来检查发票中的位置。它工作得很好,但是当一个位置已经在另一个发票中时,这个位置应该被移除,但是它会出现例外情况。

“集合已被修改;枚举操作可能不会执行。”

我不知道怎么解决这个问题

代码语言:javascript
复制
 private static void ValidateInvoices(List<IGrouping<string, InvoiceCount>> invo)
        {
            var validationErrors = new StringBuilder();
            foreach (IGrouping<string, InvoiceCount> invoice in invo)
            {
                for (var line = 1; line < invoice.Count(); line++)
                {
                    if (!invoice.ElementAt(line).IsInSameInvoice(invoice.First()))
                    {
                        validationErrors.Append("Validation error in Invoice" + invoice.Key + " in line " + (line + 1) + Environment.NewLine);
                        if (invo.Contains(invoice))
                            try
                            {
                                invo.Remove(invoice);
                            }
                            catch (Exception ex)
                            {
                                throw ex;
                            }
                    }
                }
            }
            if (validationErrors.Length > 0)
                throw new Exception(validationErrors.ToString());
        }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-21 06:50:28

您需要在删除元素之后刷新集合。尝试像下面这样修改您的代码,看看它是否有效:

代码:

代码语言:javascript
复制
var newList = invo;
foreach (IGrouping<string, InvoiceCount> invoice in invo)
{
       for (var line = 1; line < invoice.Count(); line++)                
       {
           if (YOUR CONDITION HERE)
           {
              newList.Remove(invoice );
              invo= newList;
           }
       }
}

注: 如何在迭代期间修改集合

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34390107

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档