У меня есть List<IGrouping<string, InvoiceCount>>
, чтобы проверять позиции в счете-фактуре. Он отлично работает, но когда позиция уже находится в другом счете, позиция должна быть удалена, но придет исключение.Коллекция была изменена IGrouping of Invoices
«Коллекция была изменена, операция перечисления не может выполняться».
, и я понятия не имею, чтобы решить эту
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());
}
Возможный дубликат [Коллекция была изменена; операция перечисления не может выполняться] (http://stackoverflow.com/questions/604831/collection-was-modified-enumeration-operation-may-not-execute) –
Возможный дубликат [C# Collection был изменен; операция перечисления не может выполняться] (http://stackoverflow.com/questions/2024179/c-sharp-collection-was-modified-enumeration-operation-may-not-execute) – BhushanK