C# 在对发票进行分组时修改了收款
我有一个C# 在对发票进行分组时修改了收款,c#,C#,我有一个列表来检查发票中的位置。它工作得很好,但当一个职位已经在另一张发票中时,该职位应该被删除,但会出现例外 “集合已修改;枚举操作可能无法执行。” 我不知道如何解决这个问题 private static void ValidateInvoices(List<IGrouping<string, InvoiceCount>> invo) { var validationErrors = new StringBuilder();
列表
来检查发票中的位置。它工作得很好,但当一个职位已经在另一张发票中时,该职位应该被删除,但会出现例外
“集合已修改;枚举操作可能无法执行。”
我不知道如何解决这个问题
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());
}
private static void ValidateInvoices(列表发票)
{
var validationErrors=新的StringBuilder();
foreach(在发票中分组发票)
{
对于(变量行=1;行0)
抛出新异常(validationErrors.ToString());
}
删除元素后需要刷新集合。
尝试按以下方式更改您的代码,看看它是否有效:
代码:
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;
}
}
}
var newList=invo;
foreach(在发票中分组发票)
{
对于(变量行=1;行
注意:可能的重复