0

在 C# 中,我使用XpathExpression和字段发布日期的自定义比较函数对RSS 提要进行排序。

我需要将此排序XPathNodeIterator对象转换为List<XElement>“通用 Linq 类型”对象。我尝试使用中间数据类型,但没有任何运气。

试过:

List<XElement> elements = new List<XElement>();
IEnumerable<XElement> sortedElements;
IEnumerable<XElement> newElements;

sortedElements = (IEnumerable <XElement>) iterator;

我也尝试过在列表中使用 order by,但仅使用List<XElement>.

4

2 回答 2

1

由于这是 a IEnumerable,转换为 an 的最简单方法IEnumerable<>是使用OfType,如下所示:

var sortedElements = iterator.OfType<XPathNavigator>();

这不会给你XElement对象;这是单独的 XML API 的一部分。但是,这些XPathNavigator对象可能具有您需要的数据,因此您可以根据您的需要进行某种跟进Select

var elementValues = iterator.OfType<XPathNavigator>().Select(n => n.Value);

如果您确实想使用System.Linq.Xml一些东西,您可以将您的 XPath 重写为 LINQ XDocument

于 2015-04-16T19:04:17.953 回答
0

我知道这个问题很老,但你检查过这是否有效吗?

var xmlStrings = iterator.OfType<XPathNavigator>().Select(n => n.OuterXml).ToList();
var xmlElements = new List<XElement>();
xmlStrings.ForEach(el => xmlElements.Add(XElement.Parse(el)));
于 2019-03-21T13:37:06.260 回答