C# 从xml中的子级获取最后一个值

C# 从xml中的子级获取最后一个值,c#,xml,linq,C#,Xml,Linq,我试图在xml文件中获取上次预订的id值 这是我的代码: XElement id = (from p in z.Elements("booking") select p.Element("id")).Last(); 但是,这也会返回标记:5 知道如何在没有-标记的情况下获得值吗 xml文件如下所示: <?xml version="1.0" encoding="utf-8"?> <bookings> &

我试图在xml文件中获取上次预订的id值

这是我的代码:

        XElement id = (from p in z.Elements("booking")
                           select p.Element("id")).Last();
但是,这也会返回标记:5 知道如何在没有-标记的情况下获得值吗

xml文件如下所示:

<?xml version="1.0" encoding="utf-8"?>
<bookings>
<booking>
<id>1</id>
<name>a</name>
</booking>
<booking>
<id>2</id>
<name>b</name>
</booking>
</bookings>

1.
A.
2.
B
试试这个:

XElement lastElement = (from p in doc.Elements("bookings").Elements("booking")
                        select p.Element("id")).LastOrDefault();

if(lastElement!=null)
    var value = lastElement.Value;
我假设
doc
是表示xml的对象

在我编写上述代码之前,您应该声明

XDocument doc = XDocument.Load("test.xml");

我假设xml文件的名称是test.xml。

如果总是至少有一个预订,那么您应该为id获取一个值。如果文件中没有id(因此没有预订),那么id将是
字符串。空
取决于您喜欢引用空字符串的方式

string id = (string)z.Descendants("id").LastOrDefault();

可以显示xml文件吗?
id
元素是什么样子的?你说的标签是指元素名吗?@Tess请给我几分钟时间查看一下。谢谢。@Selman22是的,我指的是元素names@Tess请看我更新的帖子。Thanks@Tess因为我在本地测试了它,它对我有效,所以我认为应该有一个微妙的点,我们必须修正,以便你得到你想要的。有一个问题,代码中的z代表xml文件?不能将
XElement
转换为
字符串。您应该阅读
XElement
@MD.Unicorn的
Value
属性。您可以。有一些从XElement到string和其他类型(如int、double、DateTime)的转换。有关更多详细信息,请参阅文档。有关回复的感谢。使用你的代码,我仍然得到标签555,我想要没有标签的值。@MD.Unicorn是的,你可以,请看这里@Tess,我会在几分钟内更新我的帖子。谢谢你的耐心,谢谢你,恰克。克里斯托斯几天前就解决了这个问题,但我感谢你抽出时间来帮助我。@Tess,当然-把他的答案标记为正确答案,这样别人就不会认为没有令人满意的答案了。