Ваше предложение select
означает, что тип q
на самом деле IEnumerable<IEnumerable<XElement>>
.Я подозреваю, что вы имеете в виду:
var q = from artikel in xmlSource.Descendants("ART")
where artikel.Element("ID").Value.Equals("15")
from element in artikel.Elements()
select element;
Или:
var q = from artikel in xmlSource.Descendants("ART")
where (string) artikel.Element("ID") == "15"
from element in artikel.Elements()
select element;
или даже:
var q = from artikel in xmlSource.Descendants("ART")
where (int) artikel.Element("ID") == 15
from element in artikel.Elements()
select element;
Это даст тип для q
всего IEnumerable<XElement>
- это сгладит результаты, в основном.Вы получите последовательность всех элементов, которые находятся непосредственно под элементом «ART», который в свою очередь имеет элемент «ID» со значением 15.
Если это не такчто вы ищете, пожалуйста, дайте больше информации - в идеале образец XML-файла вместе с ожидаемым результатом.
Маловероятно, что вы действительно хотите напечатать имя элемента всеххотя элементы ... имя клиента должно храниться где-то как значение (текст в элементе или атрибуте), а не как имя элемента.
РЕДАКТИРОВАТЬ: Если вы хотите использовать IEnumerable<IEnumerable<XElement>>
вы можете использовать:
foreach (var result in q)
{
Console.WriteLine("Next result...");
foreach (var element in result)
{
Console.WriteLine("Got name: {0}", element.Name);
}
}