У меня есть XML-файл следующим образом:Нужна вложенной LINQ к XML-запрос помощи
<?xml version="1.0" encoding="utf-8" ?>
<publisher>
<name>abc</name>
<link>http://</link>
<description>xyz</description>
<category title="Top">
<item>
<title>abc</title>
<link>http://</link>
<pubDate>1</pubDate>
<description>abc</description>
</item>
<item>
<title>abc</title>
<link>http://</link>
<pubDate>2</pubDate>
<description>abc</description>
</item>
</category>
<category title="Top2">
<item>
<title>abc</title>
<link>http://</link>
<pubDate>1</pubDate>
<description>abc</description>
</item>
<item>
<title>abc</title>
<link>http://</link>
<pubDate>2</pubDate>
<description>abc</description>
</item>
</category>
</publisher>
Мне нужно написать LINQ для запроса XML в C#, который возвращает все под «категории» метки на основе значения предоставленного атрибута. Я пробовал следующий код, но он дает мне ошибку. Любая помощь будет оценена:
System.Xml.Linq.XElement xml = System.Xml.Linq.XElement.Parse(e.Result);
IEnumerable<string> items = from category in xml.Elements("category")
where category.Attribute("title").Value == "Top"
select category.ToString();
Я почти уверен, что выбор должен приходите раньше. В любом случае, вставьте ошибку, пожалуйста. –
«SELECT before WHERE» только правило SQL, а не LINQ. Описание ошибки поможет много. Для меня непонятно, почему поиск «Топ» выполняется, когда нет названия с «Верхним» значением. Больше исходного кода также может быть полезным. – Budda
@Hamish @Budda: спасибо за ответ. Это то, что возвращается в «элементах» после выполнения запроса: System.Collections.Generic.IEnumerator .Current = 'System.Collections.Generic.IEnumerable ' не содержит определения для 'System' и нет методы расширения «System» принимать первый аргумент типа «System.Collections.Generic.IEnumerable » может быть найдено (вы пропали без вести с помощью DirectiV ... то, что я хочу, это все тегов возвращаемых в зависимости от значение категории, заданное в запросе. Например, «Топ», «Топ2» –
Taimi