Но скрипту импорта периодически не хватает памяти, чтобы загрузить всё. И падает с ошибкой. Было решено "разбивать" файлы на части по 1000 товаров. И загружать последовательно.
Решение:
Directory.EnumerateFiles(Environment.CurrentDirectory) .Where(file => Path.GetFileName(file).StartsWith("output")).ToList() .ForEach(File.Delete); XDocument source = XDocument.Load("import.xml"); int iteration = 0; while (iteration * 1000 < source.Descendants("Товар").Count()) { XDocument xdoc = new XDocument(source); var allElements = xdoc.Descendants("Товар").OrderBy(a => a.Element("Ид")?.Value); var whatToLeave = xdoc .Descendants("Товар") .OrderBy(w => w.Element("Ид")?.Value) .Skip(1000 * iteration).Take(1000); allElements.Except(whatToLeave).ToList().ForEach(e => e.Remove()); iteration++; xdoc.Save($"output{iteration}.xml"); }
Комментариев нет:
Отправить комментарий