LINQ to XML - why do I get a NullReferenceException while executing my query?
-
Friday, April 06, 2012 7:31 AM
My code:
string WHXMLHistory = "<?xml version=\"1.0\"?>\r\n<Workflows xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">\r\n <Items>\r\n <WorkflowsWorkflow>\r\n <WorklfowID>230c30f4-f69f-48a0-8d77-39896cb88ae4</WorklfowID>\r\n <Step>\r\n <WorkflowsWorkflowStep>\r\n <StartStep>2012-04-02T17:51:34.272725+04:00</StartStep>\r\n <Curcle>1</Curcle>\r\n <Task>\r\n <WorkflowsWorkflowStepTask>\r\n <ID>90</ID>\r\n <To>NIDAN\\ostepanova;NIDAN\\kvinogradov;NIDAN\\skechutkina</To>\r\n <RealTo>NIDAN\\ostepanova;NIDAN\\kvinogradov;NIDAN\\skechutkina</RealTo>\r\n <Title>Департамент качества</Title>\r\n <Description>Согласование документа Департамент качества</Description>\r\n <StartDate>2012-04-02T17:51:34.272725+04:00</StartDate>\r\n <Duration>24</Duration>\r\n </WorkflowsWorkflowStepTask>\r\n </Task>\r\n <ID>90</ID>\r\n </WorkflowsWorkflowStep>\r\n </Step>\r\n <Name>Согласование</Name>\r\n </WorkflowsWorkflow>\r\n <WorkflowsWorkflow>\r\n <WorklfowID>d66ac93d-3df2-42f1-869c-848ec86f8c12</WorklfowID>\r\n <Step>\r\n <WorkflowsWorkflowStep>\r\n <StartStep>2012-04-03T15:27:36.2514978+04:00</StartStep>\r\n <Curcle>1</Curcle>\r\n <Task>\r\n <WorkflowsWorkflowStepTask>\r\n <ID>90</ID>\r\n <To>NIDAN\\ostepanova;NIDAN\\kvinogradov;NIDAN\\skechutkina</To>\r\n <RealTo>NIDAN\\ostepanova;NIDAN\\kvinogradov;NIDAN\\skechutkina</RealTo>\r\n <Title>Департамент качества</Title>\r\n <Description>Согласование документа Департамент качества</Description>\r\n <StartDate>2012-04-03T15:27:36.2514978+04:00</StartDate>\r\n <Duration>24</Duration>\r\n </WorkflowsWorkflowStepTask>\r\n </Task>\r\n <ID>90</ID>\r\n </WorkflowsWorkflowStep>\r\n </Step>\r\n <Name>Согласование</Name>\r\n </WorkflowsWorkflow>\r\n <WorkflowsWorkflow>\r\n <WorklfowID>5c070d9a-afef-46bf-bab7-c27032eded24</WorklfowID>\r\n <Step>\r\n <WorkflowsWorkflowStep>\r\n <StartStep>2012-04-03T15:30:08.5907302+04:00</StartStep>\r\n <Curcle>1</Curcle>\r\n <Task>\r\n <WorkflowsWorkflowStepTask>\r\n <ID>90</ID>\r\n <To>NIDAN\\ostepanova;NIDAN\\kvinogradov;NIDAN\\skechutkina</To>\r\n <RealTo>NIDAN\\ostepanova;NIDAN\\kvinogradov;NIDAN\\skechutkina</RealTo>\r\n <Title>Департамент качества</Title>\r\n <Description>Согласование документа Департамент качества</Description>\r\n <StartDate>2012-04-03T15:30:08.5907302+04:00</StartDate>\r\n <Duration>24</Duration>\r\n </WorkflowsWorkflowStepTask>\r\n </Task>\r\n <ID>90</ID>\r\n </WorkflowsWorkflowStep>\r\n </Step>\r\n <Name>Согласование</Name>\r\n </Workflows Workflow>\r\n </Items>\r\n</Workflows>"; XDocument xd = XDocument.Parse(WHXMLHistory); var arrwf = from n in xd.Root.Descendants("WorkflowsWorkflow") orderby n.Element("StartDate").Value select new { WorkflowID = n.Element("WorklfowID").Value, StartUser = n.Element("StartUser").Value, StartDate = n.Element("StartDate").Value }; var wf = arrwf.FirstOrDefault();The last line throws NullReferenceException. I wonder why and how to avoid it?
All Replies
-
Friday, April 06, 2012 10:48 AM
Here is little bit modified source, and it worked for mevar arrwf = from n in xd.Root.Descendants("WorkflowsWorkflow") orderby n.Element("Step").Element("WorkflowsWorkflowStep").Element("Task").Element("WorkflowsWorkflowStepTask").Element("StartDate").Value select new { WorkflowID = n.Element("WorklfowID") == null ? null : n.Element("WorklfowID").Value, StartUser = n.Element("StartUser") == null ? null : n.Element("StartUser").Value, StartDate = n.Element("StartDate") == null ? null : n.Element("StartDate").Value }; var wf = arrwf.FirstOrDefault();Please mark as reply if helped.
Also visit my blog http://msguy.net/- Marked As Answer by Senglory Friday, April 06, 2012 11:42 AM

