我需要有时按属性排序xml文档,有时候按元素排序,具体取决于文档的类型。我如何在c#中使用一个sortBy方法来解决这个问题?非常感谢您的帮助!例如,我的排序键是" bookID"元素或属性,xml文件是:
<bookstore>
<book>
<bookID>100</bookID>
<name> The cat in the hat <name>
</book>
<book>
<bookID>90</bookID>
<name> another book <name>
</book>
<book>
<bookID>103</bookID>
<name> a new book <name>
</book>
</bookstore>
或有时xml的格式如下:
<bookstore>
<book bookID="100">The cat in the hat</book>
<book bookID="90">another book</book>
<book bookID="103"> a new book</book>
</bookstore>
答案 0 :(得分:1)
假设您使用Linq-to-XML,则需要在查询中处理这两种可能性。您可以使用let
关键字,但基本思路是检查属性或元素是否为null并使用适当的值。
var books = from book in document.Element("bookstore").Elements("book")
let bookId = book.Attribute("bookID") != null
? book.Attribute("bookID").Value
: book.Element("bookID").Value
orderby int.Parse(bookId)
select book; // project properties of book as needed