private static XElement CheckItemsExistence(ItemMapper mapper, XDocument inputXml) { XDocument dbResultXml = mapper.ExecuteStoredProcedure(StoredProcedure.custom_p_checkItemsExistenceByCode, true, inputXml); //Oczekuje kolekcji w postaci <line><id></id><lineNumber></lineNumber></line> //dodanie do xml idków foreach (var dbElement in dbResultXml.Root.Elements()) { XElement idElement = dbElement.Element(XmlName.Id); if (idElement != null && !String.IsNullOrEmpty(idElement.Value)) { XElement lineNumberElement = dbElement.Element("lineNumber"); string lineNumber = lineNumberElement != null ? lineNumberElement.Value : String.Empty; XElement srcLineElement = inputXml.Root.Elements() .Where(line => line.Element("LineNumber") != null && line.Element("LineNumber").Value == lineNumber).FirstOrDefault(); if (srcLineElement != null) { srcLineElement.Add(new XElement(idElement)); srcLineElement.Add(new XElement(dbElement.Element(XmlName.Id))); srcLineElement.Add(new XElement(dbElement.Element("version"))); srcLineElement.Add(new XElement(dbElement.Element("unitId"))); srcLineElement.Add(new XElement(dbElement.Element("vatRateId"))); srcLineElement.Add(new XElement(dbElement.Element("code"))); srcLineElement.Add(new XElement(dbElement.Element("name"))); srcLineElement.Add(new XElement(dbElement.Element("itemTypeId"))); srcLineElement.Add(new XElement(dbElement.Element("defaultPrice"))); } } } return(inputXml.Root); }