Синтаксис тройной точки vb.net для linq to xml - PullRequest
5 голосов
/ 04 мая 2011

Я столкнулся с этим ответом с синтаксисом тройной точки в 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 ]

8 голосов
/ 04 мая 2011

При использовании ... вместо. Вы ссылаетесь не на прямого потомка <Item>, а на любой <Item> в дереве иерархии.

Так <A>...<B> даст результат для

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

, тогда как <A>.<B> не даст результата в этом примере ...

6 голосов
/ 04 мая 2011

Тройными точками является «ось потомка» , которая используется для доступа к списку узлов XML с данным именем в Литеральный синтаксис XML («LINQ to XML»):

Получает все элементы имени элемента [parent], независимо от того, насколько глубоко в иерархии они встречаются.

Этот синтаксис не существует в C #, только вVB (на данный момент).

4 голосов
/ 05 мая 2011

Ответ, на который вы ссылаетесь, был моим от другого вопроса, а тройная точка - просто ярлык для вызова .Descendants(). C # не поддерживает встроенный XML, поэтому вам придется вызывать методы, если вы не в VB. Вот карта:

  • Ярлык VB.NET: = метод C #
  • ...<node>: = .Descendants("node")
  • .<node>: = .Elements("node")
  • .@attr: = .Attribute("attr").Value

Вы можете увидеть все это из intellisense VB.

VB.NET intellisense

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...