Tricky Linq to XML

ssoofftt

New Member
Please review below code and advice what needs to be done in order to get the additional last line in output as shown in expected output\[code\]class test { static void Main(string[] args) { XDocument doc = XDocument.Load("E:\\BI_analytics\\Data\\so.xml"); var query = from test in doc.Descendants("tester") from testreq in test.Descendants("testRequest") from testresp in test.Descendants("testResponse") let id = testreq.Element("id") == null ? string.Empty : testreq.Element("id").Value // select id; from itm in testresp.Descendants("item") select new { ID = (string)id, Name = (string)itm.Attribute("itemname"), Code = (string)itm.Attribute("itemocde"), }; foreach (var result in query) { Console.WriteLine(result); } }}\[/code\]Current output{ ID = 2, Name = test item1, Code = 111 }{ ID = 2, Name = test item2, Code = 222 }{ ID = 3, Name = test item3, Code = 333 }{ ID = 3, Name = test item4, Code = 444 }Expected output{ ID = 2, Name = test item1, Code = 111 }{ ID = 2, Name = test item2, Code = 222 }{ ID = 3, Name = test item3, Code = 333 }{ ID = 3, Name = test item4, Code = 444 }{ ID = 4, Name = , Code = }\[code\]<?xml version="1.0" encoding="utf-8"?><root> <tester> <testRequest> <id>2</id> </testRequest> <testResponse> <items> <item itemname="test item1" itemocde="111"/> <item itemname="test item2" itemocde="222"/> </items> </testResponse> </tester> <tester> <testRequest> <id>3</id> </testRequest> <testResponse> <items> <item itemname="test item3" itemocde="333"/> <item itemname="test item4" itemocde="444"/> </items> </testResponse> </tester> <tester> <testRequest> <id>4</id> </testRequest> <testResponse> <items /> </testResponse> </tester></root>\[/code\]
 
Back
Top