У меня есть коллекция IEnumerables, и каждый из них имеет разные значения атрибутов, которые соответствуют другому свойству на моем бизнес-объекте. Вот образец XML, который я запрашивая против:Найти XElement по значению атрибута
<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>
Я думаю, что мой linq2xml лямбда близко (после поиска MSDN и SO), но я не могу показаться, чтобы настроить это только право:
string cityName = simpleData.Where(a => a.Attribute("name").Value == "name").Select(a => a.Value).ToString();
значение CITYNAME получить присвоенный "System.Linq.Enumerable + WhereSelectEnumerableIterator`2 [System.Xml.Linq.XElement, System.String]" вместо Арлингтон Хайтс
Есть предложения? Благодаря
+1 для этого XML следует снимать! – CoderDennis
Я бы предложил использовать атрибут '(string) Attribute (" name ")' over 'Attribute (" name "). Value' - это одно и то же, за исключением того, что сначала выполняется нуль-проверка. Поскольку 'Attribute()' возвращает 'null', когда атрибут с таким именем не выходит из элемента, первый такой элемент запускает' NullReferenceException' в запросе, как в настоящее время написано. –
Черт, я знал, что это была одна маленькая вещь, которую мне не хватало, добавив, что FirstOrDefault сделал это. Благодарю. Немного я могу сделать с XML, это источник импорта сторонних данных. – 2009-10-28 20:08:34