如何使用Linq to Xml获取单个XElement对象?

3

我希望使用Linq to Xml通过属性名称从XML文件中获取单个XElement,类似于在下面使用Linq to Sql按ID检索单个对象:

var singleDog = context.Dogs.Single(p => p.Id == int.Parse(Id));

这可行吗?


好问题,凯文。我正在尝试理解linq to xml,并且这个问题(以及答案)非常有帮助。 - itsmatt
1个回答

7
当然可以,只需要使用如下内容: ```html 绝对没问题。只需使用以下代码: ```
xdoc.Descendants()
    .Where(x => x.HasAttribute("id") && x.Attribute("id")==id)
    .Single();

诚然,可能有更高效的方法来完成它...


1
这段代码有一个问题,我发现XElement对象没有HasAttribute属性。如果我从Lambda表达式中删除它,它就可以正常工作! - Mr. Kraus
我也让以下语句工作了!xmlDoc.Descendants("Site").Single(p => (string)p.Attribute("Name") == rootName);其中rootName是字符串类型。 - Mr. Kraus
那对于没有Name属性的元素有什么作用呢? - Jon Skeet
我会使用SingleOrDefault来避免空引用异常,然后再进行空值检查。 - Johan Leino

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接