national_fulfillment
asked on
linq query c# returning null exception
I'm still pretty new to using Linq but i've used a query like this in the past and it works. When i debug the program i can see data in the document object but when it hits the linq statement i get a null exception. The document structure looks like this:
<contact>
<FirstName>Anne</FirstName >
<LastName>Smith</LastName>
<Address1>729 Main Ave</Address1>
<Address2/>
<City>Grand Haven</City>
<State>MI</State>
<Zip>49417</Zip>
<Phone>6168500344</Phone>
</contact>
THis is my query:
var myOrd = (from contactdetail in xDocument.Root.Descendants ()
select new
{
BillFirstName = contactdetail.Element("Fir stName").V alue,
BillLastName = contactdetail.Element("Las tName").Va lue,
BillStreet1 = contactdetail.Element("Add ress1").Va lue,
BillStreet2 = contactdetail.Element("Add ress2l").V alue,
BillCity = contactdetail.Element("Cit yl").Value ,
BillState = contactdetail.Element("Sta tel").Valu e,
BillZip = contactdetail.Element("Zip l").Value,
} );
foreach (var type in myOrd)
{
//do stuff here
}
<contact>
<FirstName>Anne</FirstName
<LastName>Smith</LastName>
<Address1>729 Main Ave</Address1>
<Address2/>
<City>Grand Haven</City>
<State>MI</State>
<Zip>49417</Zip>
<Phone>6168500344</Phone>
</contact>
THis is my query:
var myOrd = (from contactdetail in xDocument.Root.Descendants
select new
{
BillFirstName = contactdetail.Element("Fir
BillLastName = contactdetail.Element("Las
BillStreet1 = contactdetail.Element("Add
BillStreet2 = contactdetail.Element("Add
BillCity = contactdetail.Element("Cit
BillState = contactdetail.Element("Sta
BillZip = contactdetail.Element("Zip
} );
foreach (var type in myOrd)
{
//do stuff here
}
Copy pase issue
this is correct:
var myOrd = (from contactdetail in xDocument.Descendants("con tact")
select new
{
BillFirstName = contactdetail.Element("Fir stName").V alue,
BilllLastName = contactdetail.Element("Las tName").Va lue,
BillStreet1 = contactdetail.Element("Add ress1").Va lue,
BillStreet2 = contactdetail.Element("Add ress2").Va lue,
BillCity = contactdetail.Element("Cit y").Value,
BillState = contactdetail.Element("Sta te").Value ,
BillZip = contactdetail.Element("Zip ").Value
});
or
var myOrd = (from contactdetail in xDocument.Descendants("con tact")
select new
{
BillFirstName = contactdetail.Descendants( "FirstName ").First() .Value,
BilllLastName = contactdetail.Element("Las tName").Va lue,
BillStreet1 = contactdetail.Element("Add ress1").Va lue,
BillStreet2 = contactdetail.Element("Add ress2").Va lue,
BillCity = contactdetail.Element("Cit y").Value,
BillState = contactdetail.Element("Sta te").Value ,
BillZip = contactdetail.Element("Zip ").Value
});
this is correct:
var myOrd = (from contactdetail in xDocument.Descendants("con
select new
{
BillFirstName = contactdetail.Element("Fir
BilllLastName = contactdetail.Element("Las
BillStreet1 = contactdetail.Element("Add
BillStreet2 = contactdetail.Element("Add
BillCity = contactdetail.Element("Cit
BillState = contactdetail.Element("Sta
BillZip = contactdetail.Element("Zip
});
or
var myOrd = (from contactdetail in xDocument.Descendants("con
select new
{
BillFirstName = contactdetail.Descendants(
BilllLastName = contactdetail.Element("Las
BillStreet1 = contactdetail.Element("Add
BillStreet2 = contactdetail.Element("Add
BillCity = contactdetail.Element("Cit
BillState = contactdetail.Element("Sta
BillZip = contactdetail.Element("Zip
});
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
I can't change the structure of the xml so i used your first suggestion and it worked like a charm. Thanks a bunch.
Not a problem, glad I was able to help.
Open in new window