C# 在XML中选择单个节点

C# 在XML中选择单个节点,c#,xml,xpath,C#,Xml,Xpath,我的XML是单一的 <linkToFooterRepository>1054</linkToFooterRepository> <linkToTopNavRepository>1188</linkToTopNavRepository> <author>1413</author> 1054 1188 1413 然后我有 var xmlListItems = xPathNavigator.Select(xPathChildr

我的XML是单一的

<linkToFooterRepository>1054</linkToFooterRepository>
<linkToTopNavRepository>1188</linkToTopNavRepository>
<author>1413</author>
1054
1188
1413
然后我有

var xmlListItems = xPathNavigator.Select(xPathChildren)
            .Cast<XPathNavigator>()
            .OrderByDescending(x =>
            {
                var xmlNode = x.SelectSingleNode("author=1413");


            })
            .Skip(pager.CurrentPageIndex * pager.PageSize)
            .Take(pager.PageSize);
var xmlListItems=xPathNavigator.Select(xPathChildren)
.Cast()
.OrderByDescending(x=>
{
var xmlNode=x.SelectSingleNode(“author=1413”);
})
.Skip(pager.CurrentPageIndex*pager.PageSize)
.Take(pager.PageSize);
我一直得到一个表达式必须计算为节点集错误。我对Xpath非常陌生,所以我认为我传递给author的方式会导致这个错误。随着时间的推移,我计划将author ID(1413)变成一个变量,供许多作者使用

谢谢

尝试以下方法(假设您有根元素):

我创建了这个简单的代码,因为您的XML不包含根元素

var xml =
          "<root>" +
          "    <linkToFooterRepository>1054</linkToFooterRepository>" +
          "    <linkToTopNavRepository>1188</linkToTopNavRepository>" +
          "    <author>1413</author>" 
          "</root>"
          ;

var x = new XmlDocument();
x.LoadXml(xml);

var xmlNode = x.SelectSingleNode(@"/root/author[text()='1413']");  // /author=[1413]
var-xml=
"" +
"    1054" +
"    1188" +
"    1413" 
""
;
var x=新的XmlDocument();
x、 LoadXml(xml);
var xmlNode=x.SelectSingleNode(@“/root/author[text()='1413']”;///作者=[1413]

您可以在XML的开头发布更多的文件、初始行吗?如何获取
x
变量?您的语法不正确。XPath应该是“author[text()='1413']”请参见。谢谢你,迈克,我的语法确实不正确
var xml =
          "<root>" +
          "    <linkToFooterRepository>1054</linkToFooterRepository>" +
          "    <linkToTopNavRepository>1188</linkToTopNavRepository>" +
          "    <author>1413</author>" 
          "</root>"
          ;

var x = new XmlDocument();
x.LoadXml(xml);

var xmlNode = x.SelectSingleNode(@"/root/author[text()='1413']");  // /author=[1413]