查找“缺失”的节点属性

发布于 2024-12-13 05:55:51 字数 642 浏览 0 评论 0原文

我有如下所示的 xml:

<Doc>
  <Thing>
      <ID type="One">Fred</ID>
   </Thing>
   <Thing>
      <ID>Bill</ID>
   </Thing>
   <Thing>
     <ID type="Two">John</ID>
   </Thing>
</Doc>

我可以编写 LINQ 来查找 type="One" 节点。 (或 type="Two")

Dim ThingList As IEnumerable(Of XElement) = _
   From el In doc...<Thing>.<ID> _
   Where el.Attribute("type").Value = "One" _
   Select el

我如何编写 linq 查询来查找根本没有 type 属性的 ID 节点?

I have xml that looks like this:

<Doc>
  <Thing>
      <ID type="One">Fred</ID>
   </Thing>
   <Thing>
      <ID>Bill</ID>
   </Thing>
   <Thing>
     <ID type="Two">John</ID>
   </Thing>
</Doc>

I can write LINQ to find the type="One" nodes. (or type="Two")

Dim ThingList As IEnumerable(Of XElement) = _
   From el In doc...<Thing>.<ID> _
   Where el.Attribute("type").Value = "One" _
   Select el

How would I write a linq query to find the ID node that doesn't have a type attribute at all?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

私野 2024-12-20 05:55:51

您应该利用这样一个事实:如果没有这样的属性,Attribute() 将返回 null/nothing。

在 C# 中,我会使用:

var idsMissingType = doc.Descendants("ID") // Or whatever
                        .Where(x => x.Attribute("type") == null);

我的猜测是,您想要的 VB 是:

Dim ThingList As IEnumerable(Of XElement) = _
   From el In doc...<Thing>.<ID> _
   Where el.Attribute("type") Is Nothing _
   Select el

You should use the fact that Attribute() will return null/nothing if there's no such attribute.

In C# I would use:

var idsMissingType = doc.Descendants("ID") // Or whatever
                        .Where(x => x.Attribute("type") == null);

My guess is that the VB you want is:

Dim ThingList As IEnumerable(Of XElement) = _
   From el In doc...<Thing>.<ID> _
   Where el.Attribute("type") Is Nothing _
   Select el
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文