rf_wilson
rf_wilson

Reputation: 1582

Select XElement where child element has a value

Given the following XML:

<platforms>
  <platform>
    <id>1</id>
    <price>2.99</price>
  </platform>
</platforms>

How can I select the "platform" element as an XElement object based on the child element "id" having a value of "1"?

I have got this far:

XDocument xPlatformXml = new XDocument();
XElement xel = xPlatformXml.Element("platforms").Elements("platform").Where(x => x.Value == "1").SingleOrDefault();

But this is looking for the value to be in "platform" element rather than "id".

Upvotes: 8

Views: 29393

Answers (1)

MarcinJuraszek
MarcinJuraszek

Reputation: 125650

XDocument xPlatformXml = new XDocument();
XElement xel = xPlatformXml.Element("platforms")
                           .Elements("platform")
                           .Where(x => x.Element("id").Value == "1")
                           .SingleOrDefault();

Or using XElement to int conversion:

XDocument xPlatformXml = new XDocument();
XElement xel = xPlatformXml.Element("platforms")
                           .Elements("platform")
                           .Where(x => (int)x.Element("id") == 1)
                           .SingleOrDefault();

Upvotes: 19

Related Questions