public static IList <DocumentForParsing> Merge(List <DocumentReceiveLog> documents) { DocumentReceiveLog headerFile = null; DocumentReceiveLog bodyFile = null; try { var resultList = new List <DocumentForParsing>(); for (var i = 0; i < documents.Count; i++) { headerFile = null; bodyFile = null; var file = documents[i]; if (IsHeaderFile(file)) { headerFile = file; bodyFile = GetSecondFile(headerFile, documents); } if (IsBodyFile(file)) { bodyFile = file; headerFile = GetSecondFile(bodyFile, documents); } if ((headerFile != null) && (bodyFile != null)) { var mergedFile = MergeFiles(headerFile, bodyFile); resultList.Add(new DocumentForParsing(file, mergedFile)); documents.Remove(headerFile); documents.Remove(bodyFile); i--; } else { resultList.Add(new DocumentForParsing(file)); } } return(resultList); } catch (Exception e) { var log = LogManager.GetLogger(typeof(MultifileDocument)); log.Error("Ошибка при слиянии многофайловых накладных", e); if (headerFile != null) { WaybillService.SaveWaybill(headerFile.GetFileName()); } if (bodyFile != null) { WaybillService.SaveWaybill(bodyFile.GetFileName()); } return(documents.Select(d => new DocumentForParsing(d)).ToList()); } }