How to turn a LINQ query into an anonymous type

I have such a brain. I have selected the elements and values ​​that I need, I am just struggling to return an anonymous type:

Here is the XML:

<r25:space xl:href="space.xml?space_id=244" id="BRJDMjQ0" crc="00000023" status="est"> <r25:space_id>244</r25:space_id> <r25:space_name>BEC*103</r25:space_name> <r25:formal_name>Branson Education Center 103</r25:formal_name> <r25:partition_id /> <r25:partition_name /> <r25:favorite>F</r25:favorite> <r25:max_capacity>24</r25:max_capacity> <r25:fill_ratio /> <r25:last_mod_user>kleierd</r25:last_mod_user> <r25:last_mod_dt>2009-11-19T15:35:33</r25:last_mod_dt> </r25:space> 

I need the value of "space_id" and "space_name", which I can get with this:

 var ids = from id in xml.Descendants() where id.Name.LocalName == "space_id" || id.Name.LocalName == "space_name" select (string)id.Value; 

But I would really like it:

 var ids = from id in xml.Descendants() where id.Name.LocalName == "space_id" || id.Name.LocalName == "space_name" select new { theId = //The id val would go here, theName = //The name goes here }; 
+4
source share
1 answer
 var ids = from id in xml.Descendants() where id.Name.LocalName == "space_id" || id.Name.LocalName == "space_name" select new { theId = id.Value, theName = id.Name.LocalName }; 

ids will contain the values:

 theId theName 244 pace_id BEC*103 space_name 

this will select the same nodes:

 XNamespace r25 = "yourSchemaDefinition"; var ids = xml.Descendants(r25 + "space_id") .Union(xml.Descendants(r25 + "space_name")) .Select(id => new { theId = id.Value, theName = id.Name.LocalName }); 

NOTE. I added r25 schema r25 to your xml node root directory

+3
source

All Articles