0

我有这样的事情:

<Books>
    <Book>
        <Number>
        <Title>
        <Author>
        <NumberOfCopies>
    </Book>
</Books>

NumberOfCopies元素表示图书馆拥有同一本书的相同副本的数量。(相同的书籍=相同的作者,相同的标题)。每本书的Number元素都不同,用于将它们存储在图书馆中。

当我添加一本新书时,我想知道图书馆有多少册。(int number)如何做到这一点?

XDocument doc = XDocument.Load("books.xml");
var q = from x in doc.Descendants("Books")
        where x.Element("Author").Value == newBook.Author
              && x.Element("Title").Value == newBook.Title
        select x;

int number = (int)q;

这行不通。我究竟做错了什么?

4

1 回答 1

2

怀疑你想要:

var book = doc.Descendants("Book") // Note Book, not Books
              .Where(x => x.Element("Author").Value == newBook.Author &&
                          x.Element("Title").Value == newBook.Title)
              .FirstOrDefault();

if (book != null)
{
    int copies = (int) book.Element("NumberOfCopies");
}

当然,这假设您对于给定的书只有一个元素。

于 2012-11-07T09:36:57.617 回答