I\'m working with an existing XML document which has a structure (in part) like so:
Bob
XElement actually has interesting explicit conversion operators that do the right thing in this case.
So, you rarely actually need to access the .Value property.
This is all you need for your projection:
var items =
from g in xDocument.Root.Descendants("Group").Elements("Entry")
select new
{
name = (string) g.Element("Name"),
id = (string) g.Element("ID") ?? "none",
};
And if you'd prefer to use the value of ID as an integer in your anonymous type:
var items =
from g in xDocument.Root.Descendants("Group").Elements("Entry")
select new
{
name = (string) g.Element("Name"),
id = (int?) g.Element("ID"),
};