linq到xml的vb.net三点式语法

时间:2011-05-04 12:38:55

标签: c# vb.net syntax

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

查询看起来像这样

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

我试图在google上搜索有关此三重点语法但我没有得到任何内容。

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

由于

3 个答案:

答案 0 :(得分:8)

当使用...而不是。时,您不是指向直接子<Item>,而是指层次树中的任何<Item>

所以<A>...<B>给出

的结果
<A>
  <X1>
    <X2>
      <B></B>
   </X2>
  </X1>
</A>

<A>.<B>在这个例子中没有结果......

答案 1 :(得分:6)

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

  

获取[parent]元素的所有名称元素,无论它们出现在层次结构中有多深。

此语法在C#中不存在,仅在VB中(暂时)。

答案 2 :(得分:4)

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

  • VB.NET快捷方式:= C#方法
  • ...<node>:= .Descendants("node")
  • .<node>:= .Elements("node")
  • .@attr:= .Attribute("attr").Value

你可以从VB的intellisense中看到所有这些。

VB.NET intellisense