【发布时间】:2017-05-08 11:13:11
【问题描述】:
我正在尝试使用 Linq 对 XElement 的子项进行排序,然后用 sorted 替换现有的子项。
首先我创建 XElement:
XElement WithLinq =
new XElement("Names",
from cust in Customers.AsEnumerable()
select
new XElement("Customer",
new XAttribute("ID", cust.ID),
new XElement("Name", cust.Name),
new XElement("Purchases",
from pur in cust.Purchases
select
new XElement("Purchase",
new XElement("Produkt",pur.Description),
new XAttribute("ID",pur.ID),
new XElement("Price",pur.Price),
new XComment("teraz daty"),
new XElement("Date",pur.Date), //Formatuje DateTime zgodnie z normami XMLa
new XElement("DataAleNieDoKonca",pur.Date.ToString(CultureInfo.InvariantCulture)))))
);
然后我对节点进行排序:
var NowaKolejnosc = WithLinq.Elements().Last().Elements().OrderBy(n => n.Name).ThenBy(n => n.Value);
并替换它们:
WithLinq.Elements().Last().ReplaceNodes(NowaKolejnosc);
但我得到一个运行时异常:ArgumentException: 'Co najmniej jeden obiekt musi implementować element IComparable.'翻译:至少一个对象必须实现 IComparable。
我不明白是什么导致了异常以及如何修复它。
【问题讨论】:
标签: c# linq linq-to-xml