2015-05-11 4 views
1

Я преобразование части кода из VB.net на C# и я застрял в этом разделеVB.net преобразование в C#

If Not IsNothing(successNode) Then 
    Dim _data As XElement = (From xml In xDoc.Descendants("data") Select xml).FirstOrDefault 
    Dim _count As Integer = [email protected] 
    If _count > 0 Then 
     _objectCollection = New QueryObjectCollection([email protected]) 
     For Each item As XElement In _data.Elements([email protected]) 
      If Not IsNothing(item.<RECORDNO>) Then 
       _objectCollection.Keys.Add(item.<RECORDNO>.Value) 
       _objectCollection.Objects.Add(item) 
      End If 
     Next 
    End If 
End if 

Не уверен, что [email protected] и [email protected]. Существует ли эквивалентный fuunction ic C#?

Может кто-нибудь помочь мне преобразовать этот раздел кода в C#?

+0

Я бы загрузить ILspy или аналогичный и посмотреть на C# выходе, настройки по мере необходимости .. – jdphenix

+0

Может быть, это поможет: http://stackoverflow.com/questions/91817/whats-the-use-value-of-the-character-in-variable-names-in-c – Ulric

+0

Держите в середине, что есть конвертеры, доступные для преобразования кода VB.Net на C#. По-видимому, некоторые из онлайн-конвертеров не обрабатывают литералы XML в вашем коде, но я обнаружил, что Tangible [Instant VB] (http://www.tangiblesoftwaresolutions.com/Free_Editions.html) обрабатывает больше сложных случаев (включая этот). Обратите внимание, что я не подключен к Tangible, кроме как как пользователь бесплатных версий своего программного обеспечения. – Blackwood

ответ

10

Это просто сокращение VB.

В VB:

[email protected] 
[email protected] 

В C#:

_data.Attribute("count").Value 
_data.Attribute("listtype").Value 

В частности, это является частью функции языка VB.Net из под названием "XML литералы", и используется в сочетании с LINQ к XML. (C# имеет LINQ, но не имеет XML-литералов.)

[email protected] обозначения в коде VB, при использовании на XElement означает, что вы хотите извлечь атрибут из этого XML-элемента с указанным именем. Существует также синтаксис VB, который выглядит как ...<name> для извлечения элемента указанного имени, которое будет отображаться на C# .Element("name").Value.

См. Overview of LINQ to XML in Visual Basic и XML Literals Overview.

+0

Отлично! Это работает. Это именно то, что я искал. – SQLlearner

6

@ используется для доступа к XAttributes на XElement, представленном _data (тогда как нотация <> обращается к дочерним XElements). Ваш C# порт должен выглядеть примерно так:

if (successNode != null) 
{ 
    var _data = xDoc.Descendants("data").FirstOrDefault(); 
    var _count = int.Parse(_data.Attribute("count").Value); 
    if(_count > 0) 
    { 
     var listType = _data.Attribute("listtype").Value; 
     _objectCollection = new QueryObjectCollection(listType); 
     foreach (var item in _data.Elements(listType)) 
     { 
      var recordNo = item.Element("RECORDNO"); 
      if (recordNo != null) 
      { 
       _objectCollection.Keys.Add(recordNo.Value); 
       _objectCollection.Objects.Add(item); 
      } 
     } 
    } 
} 
+0

Прохладный. Большое спасибо ... Это работает! – SQLlearner

Смежные вопросы