C# 如何使用lambda表达式asp.net从xml中获取节点名和子名称

C# 如何使用lambda表达式asp.net从xml中获取节点名和子名称,c#,asp.net,xml,C#,Asp.net,Xml,我不熟悉Lambda表达式,我有如下xml格式 <authorofBook> <chycology category="New"> <Book id"1">professor cesior</Book> <Book id"2">professor cesior</Book> <Book id"3">professor cesior</Book> </chycology> <chyco

我不熟悉Lambda表达式,我有如下xml格式

<authorofBook>
<chycology category="New">
<Book id"1">professor cesior</Book>
<Book id"2">professor cesior</Book>
<Book id"3">professor cesior</Book>
</chycology>
<chycology category="Old">
<Book id"1"> willom</Book>
<Book id"2">taylor</Book>
</chycology>
<authorofBook>
但是我不知道如何根据分类来获得这些书

 XNamespace ns = doc.Root.Name.Namespace;

        XElement books= doc.Descendants(ns + "chycology").First(x => x.Attribute("category").Value.Equals("New"));
也许你可以试试这样的?这就是我在项目中的做法

无命名空间编辑

      XElement books= doc.Descendants("chycology").First(x => x.Attribute("category").Value

据我所知-OP的xml不包含名称空间。那么为什么要为它烦恼呢?它很好用,我们能不能把新旧书都列在列表中?如果可以的话,你能指导我把这两本书都拿出来吗?啊,安迪,你说得对,我只是想我会把它包括在其他书中。如果你想要两本书,你应该用这个:
XElement books=doc.substands(ns+“chycology”)我在元素上循环并将值分配给列表
foreach(图书中的XElement图书){bookList.Add(book.Value.ToString());}
希望这对您有所帮助,或者不使用名称空间:
XElement图书=doc.substands(“chycology”)
foreach(图书中的XElement图书){bookList.Add(book.Value.ToString());}
您的代码不太清楚-您希望得到什么结果。什么是
Author
类及其字段?如何将xml转换为作者列表?
      XElement books= doc.Descendants("chycology").First(x => x.Attribute("category").Value