C# 如何使用LINQ to XML在XML文件中为第一条记录写入ID?

C# 如何使用LINQ to XML在XML文件中为第一条记录写入ID?,c#,silverlight,windows-phone-7,linq-to-xml,auto-increment,C#,Silverlight,Windows Phone 7,Linq To Xml,Auto Increment,我正在开发WindowsPhone7应用程序。我正在使用XML作为我的应用程序的数据库。对于我的应用程序,我使用的是XML文件而不是数据库表。我的一个xml文件具有以下结构 <?xml version="1.0" encoding="utf-8" ?> <Categories> <Category> <Category_ID></Category_ID> <Category_Name></Categ

我正在开发WindowsPhone7应用程序。我正在使用XML作为我的应用程序的数据库。对于我的应用程序,我使用的是XML文件而不是数据库表。我的一个xml文件具有以下结构

<?xml version="1.0" encoding="utf-8" ?>
<Categories>
  <Category>
    <Category_ID></Category_ID>
    <Category_Name></Category_Name>
    <TransactionType_ID></TransactionType_ID>
  </Category>
  <Category>
    <Category_ID></Category_ID>
    <Category_Name></Category_Name>
    <TransactionType_ID></TransactionType_ID>
  </Category>
</Categories>
但是,当我在XML文件中插入第一条记录时,它在下面的句子中给出了错误,因为XML文件的开头没有记录

 var details = (from detail in xmldetails.Descendants("Category")
                               select (int.Parse(detail.Element("Category_ID").Value))).Max();

您能否提供任何代码、链接或任何解决方案,通过它们我可以在XML文件中插入第一条记录?如果我做错了什么,请指导我。

好吧,首先,您的查询可以写得更简单:

var id = xmlDetails.Descendants("book")
                   .Max(x => (int) x.Element("id"));
现在,如果您希望能够处理XML中没有书籍的情况,我将首先显式测试:

int id;
if (xmlDetails.Descendants("book").Any())
{
    id = xmlDetails.Descendants("book")
                   .Max(x => (int) x.Element("id"));
}
else
{
    id = -1; // Or whatever you want to do
}

(如果您愿意,也可以使用条件运算符进行此操作。)

好的,从查询开始,可以更简单地编写为:

var id = xmlDetails.Descendants("book")
                   .Max(x => (int) x.Element("id"));
现在,如果您希望能够处理XML中没有书籍的情况,我将首先显式测试:

int id;
if (xmlDetails.Descendants("book").Any())
{
    id = xmlDetails.Descendants("book")
                   .Max(x => (int) x.Element("id"));
}
else
{
    id = -1; // Or whatever you want to do
}
(如果需要,也可以使用条件运算符。)