Tengo una colección de IEnumerables y cada uno tiene valores de atributo diferentes que corresponden a una propiedad diferente en mi objeto comercial. Este es un ejemplo del XML que yo estoy consultando en contra:Buscar XElement por valor de atributo
<SimpleData name="zip">60004</SimpleData>
<SimpleData name="name">ARLINGTON HEIGHTS</SimpleData>
<SimpleData name="state">IL</SimpleData>
<SimpleData name="countyname">COOK</SimpleData>
<SimpleData name="lat">42.1121336684356</SimpleData>
<SimpleData name="lon">-87.9736682731814</SimpleData>
Creo que mi linq2xml lambda está cerca (después de buscar MSDN y SO) pero me parece que no puede modificar lo justo:
string cityName = simpleData.Where(a => a.Attribute("name").Value == "name").Select(a => a.Value).ToString();
El valor de obtener cityName del asignado a "System.Linq.Enumerable + WhereSelectEnumerableIterator`2 [System.Xml.Linq.XElement, System.String]" en lugar de Arlington Heights
¿Alguna sugerencia? Gracias
¡+1 para ese XML se debe tomar! – CoderDennis
Sugeriría usar '(cadena) Atributo (" nombre ")' sobre 'Atributo (" nombre "). Valor' - es lo mismo, excepto que primero hace una verificación nula. Dado que 'Attribute()' devuelve 'null' cuando ningún atributo con ese nombre sale de un elemento, el primer elemento de ese tipo desencadenaría una' NullReferenceException' en la consulta tal como está escrita actualmente. –
Damnit, sabía que era solo una pequeña cosa que me estaba perdiendo, agregando que FirstOrDefault lo hizo. Gracias. No hay mucho que pueda hacer sobre XML, es una fuente de importación de datos de terceros. –