Как получить последний XElement определенного типа C#, XML, LINQtoXML - PullRequest
0 голосов
/ 16 марта 2020

Я сталкивался с различными способами получения последнего элемента (есть несколько <hour> элементов и два других, но только последний <hour> элемент является целевым объектом) по следующей ссылке , Например:

XDocument xDoc = XDocument.Load("Source.xml");          
XElement lastHour = doc.Root.Elements("hour").Last();

Это не работает для меня. Когда я ставлю точку после Elements("hour"), пытаясь вызвать метод Last(), SharpDevelop не видит его. Что с ним не так?

Весь блок кода:

if (hour == hisDoc.Root.Elements("hour").Last) {
     if ((hisDoc.Element("scanerHIS").Element("constants") != null) && (fcsDay.XPathSelectElement("constants") == null)) {
     fcsDay.Add(new XElement("constants",
          new XAttribute("P001", hisDoc.Root.XPathSelectElement("constants").Attribute("P001").Value),
          new XAttribute("Q001", hisDoc.Root.XPathSelectElement("constants").Attribute("Q001").Value),
          new XAttribute("N2", hisDoc.Root.XPathSelectElement("constants").Attribute("N2").Value),
          new XAttribute("CO2", hisDoc.Root.XPathSelectElement("constants").Attribute("CO2").Value)));
     }
}
fcsDoc.Save(FCSfileName); 

1 Ответ

0 голосов
/ 16 марта 2020

Во-первых, спасибо всем, кто помог.

Мне нужно написать, используя System.Linq, потому что System. Xml .Linq не содержит Last() метода.

Ответ:

if (hour == hisDoc.Root.Descendants("hour").Last())
...