C#LINQ to XML:具有两个相同属性的元素数量?

时间:2012-11-07 09:33:15

标签: c# xml linq

我有这样的事情:

<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;

这不起作用。我做错了什么?

1 个答案:

答案 0 :(得分: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");
}

这假设你当然只有一本给定书籍的元素。