我有一个noob LINQ to XML问题。我有像这样的xml:
<pages>
<page Name="Welcome" Control="Welcome" Order="1"></page>
<page Name="Summary" Control="Summary" Order="10"></page>
</pages>
我需要读入数据并将其保存到按“Order”属性排序的数组中。这就是我所拥有的;编译器正在按顺序咳嗽。
//read in app.xml data into _Pages
XDocument doc = XDocument.Parse("app.xml");
XElement Pages = (XElement)doc.Descendants("pages");
var Pages1 =
(from page in Pages //<-- error on orderby clause
orderby page.order
select page).ToArray();
我搜索了SO并发现了几个LINQ to XML的答案,但是在一个像Pages这样的对象中说了一些xml片段。但永远不要显示它的类型。
谢谢
编辑: 错误是:无法找到源类型“System.Xml.Linq.XElement”的查询模式的实现。 'OrderBy'找不到。
答案 0 :(得分:4)
我猜你想要这样的东西:
using System.Linq;
using System.Xml.Linq;
namespace SampleApp
{
class Program
{
static void Main(string[] args)
{
string xml = @"<pages>
<page Name=""Summary"" Control=""Summary"" Order=""10""></page>
<page Name=""Welcome"" Control=""Welcome"" Order=""1""></page>
</pages>";
XDocument doc = XDocument.Parse(xml);
XElement[] pages = doc
.Descendants("page")
.OrderBy(x => (int)x.Attribute("Order"))
.ToArray();
}
}
}
这对你有用吗?这可以提供Order属性总是一个int(我在这里做了一个假设)。
答案 1 :(得分:1)
尝试使用page.Attribute(“order”)而不是page.order。