Полагаю, не совсем понятно, что вы пытаетесь сделать.
var q = from d in doc.Descendants("summary")
where d.Element("item").Attribute("key").Value == "SomeAttribute"
select new { LengendKey = d.Attribute("key").Value, ElapsedTime = d.Element("item").Value }
В вашем коде здесь d
- это все потомки "summary", которые сами имеют элемент "item" справильный атрибут.
В опубликованном вами XML-файле есть только 1 потомок 'summary', и у него нет дочерних элементов 'item' с правильным атрибутом.
Я также запуталсяо строке LengendKey = d.Attribute("key").Value, ElapsedTime = d.Element("item").Value
- здесь d
предполагается для конечного узла (который имеет ключ 1, 2, 3 и т. д.) - который будет соответствовать первой части оператора, или родительского узла, который имеет элементы 'item'под ним - что соответствует второй части утверждения?Это не может быть и то и другое одновременно.
Вы, вероятно, хотите
// first get the summary; it is a descendant of doc & there's only one.
var summary = doc.Descendants("summary").Single();
// get the element with 'SomeAttribute' from the summary;
// if there's only even going to be one then you can call Single here
var item = summary.Elements().Single(e => e.Name == "item"
&& e.Attribute("key").Value == "SomeAttribute");
var q = item.Elements().Select(e => new
{ LengendKey = e.Attribute("key").Value, ElapsedTime = e.Value });