Ho una collezione di oggetti IEnumerables e ognuno ha un valore di attributo diverso che corrisponde a una proprietà diversa sul mio oggetto business. Ecco un esempio di XML che sto l'interrogazione contro:Trova XElement per valore attributo
<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>
Penso che il mio linq2xml lambda è vicino (dopo aver cercato MSDN e SO), ma io non riesco a modificarlo giusto:
string cityName = simpleData.Where(a => a.Attribute("name").Value == "name").Select(a => a.Value).ToString();
Il valore del nome della città di avere assegnato a "System.Linq.Enumerable + WhereSelectEnumerableIterator`2 [System.Xml.Linq.XElement, System.String]" invece di Arlington Heights
Qualche suggerimento? Grazie
+1 per che XML dovrebbe essere girato! – CoderDennis
Suggerirei di usare l'attributo '(stringa) (" nome ")' su Attributo ("nome"). Valore' - è la stessa cosa, eccetto che prima fa un controllo null. Dato che 'Attribute()' restituisce 'null' quando nessun attributo con tale nome si chiude su un elemento, il primo di tali elementi innescherebbe una' NullReferenceException' nella query come attualmente scritta. –
Dannazione, sapevo che era solo una piccola cosa che mi mancava, aggiungendo FirstOrDefault. Grazie. Non c'è molto che posso fare per XML, è una fonte di importazione di dati di terze parti. –