【问题标题】:vb.net triple dot syntax for linq to xml用于 linq to xml 的 vb.net 三点语法
【发布时间】:2011-05-05 06:14:16
【问题描述】:

我遇到了this answer,它在 VB.NET 中有一个我从未见过的三点语法。

查询如下所示

Dim result =
   From xcmp In azm...<Item>.<ItemPrice>.<Component>
   Where xcmp.<Type>.Value = "Principal"
   Select Convert.ToDecimal(xcmp.<Amount>.Value)

我试图在谷歌上搜索这个三点语法,但我没有得到任何东西。

有人可以指出一些有关此语法的文档吗?我也想知道它是否可以与 C# 一起使用,或者是否有等效的?

谢谢

【问题讨论】:

    标签: c# vb.net syntax


    【解决方案1】:

    当使用 ... 而不是 . 时,您指的不是直接子 &lt;Item&gt;,而是层次结构树中的任何 &lt;Item&gt;

    所以&lt;A&gt;...&lt;B&gt; 给出一个结果

    <A>
      <X1>
        <X2>
          <B></B>
       </X2>
      </X1>
    </A>
    

    &lt;A&gt;.&lt;B&gt; 在此示例中不会给出任何结果...

    【讨论】:

    • 我自己从未真正见过这种语法。你能确认它等同于这个例子中的 XPath 选择器 //Item 吗?
    • 例如感谢 +1,但另一个答案正好解决了我的问题。
    【解决方案2】:

    三点是“descendant axis”,用于访问XML literal syntax(“LINQ to XML”)中给定名称的 XML 节点列表:

    获取 [父] 元素的所有名称元素,无论它们在层次结构中的深度如何。

    这种语法在 C# 中不存在,仅在 VB 中(目前)。

    【讨论】:

    • @TheOtherGuy 在 VB 9 / Visual Studio 2008 中。
    【解决方案3】:

    您所指的答案是我从另一个问题中得到的答案,三点只是调用.Descendants() 的快捷方式。 C# 不支持内联 XML,因此除非您在 VB 中,否则您必须调用这些方法。这是映射:

    • VB.NET 快捷方式:= C# 方法
    • ...&lt;node&gt; := .Descendants("node")
    • .&lt;node&gt; := .Elements("node")
    • .@attr := .Attribute("attr").Value

    你可以从 VB 的智能感知中看到所有这些。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-07
      • 1970-01-01
      • 2010-10-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多