Конвертировать фрагмент кода из VB.NET в C # - PullRequest
0 голосов
/ 24 февраля 2012

Я попробовал несколько свободно доступных конвертеров кода для преобразования следующего фрагмента, но безуспешно.

 Dim resultList = ((From e In p_Xml.Elements()
                       Where UCase(e.Name.LocalName) = searchName).Union(
                         From a In p_Xml.Attributes()
                         Where UCase(a.Name.LocalName) = searchName
                         Select <<%= propertyName %>><%= a.Value %></>)).ToList()

Я думаю, что получил его здесь

var resultList = (from e in p_xml.Elements()
                where e.Name.LocalName == searchName
                select propertyName).
Union(from a in p_xml.Attributes()
      where a.Name.LocalName == searchName
      select a.Value).ToList();

Ответы [ 3 ]

1 голос
/ 24 февраля 2012

Ваше преобразование пропущено UCase, чей эквивалент в C # равен ToUpperCase.

Однако это не рекомендуемый способ сравнения строк без учета регистра.

e.Name.LocalName == searchName

следует заменить на что-то вроде:

String.Compare(e.Name.LocalName, searchNamename, StringComparison.InvariantCultureIgnoreCase) == 0

Кроме того, что такое propertyName?Что бы это ни было, его значение, очевидно, не зависит от e.Вы выбираете одну и ту же вещь для каждого e в своем первом запросе, что не имеет смысла.Я предполагаю, что вы имели в виду select e.

То, что вы, вероятно, хотите, то что-то вроде:

var resultList = (from e in p_xml.Elements()
                where String.Compare(e.Name.LocalName, searchName, StringComparison.InvariantCultureIgnoreCase) == 0
                select e).
Union(from a in p_xml.Attributes()
      where String.Compare(a.Name.LocalName, searchName, StringComparison.InvariantCultureIgnoreCase) == 0
      select a.Value).ToList();

Я только не уверен, как представить Select <<%= propertyName %>><%= a.Value %></> в C #так как я не знаю VB.

0 голосов
/ 24 февраля 2012

Я слышал от Microsoft Roslyn проекта в презентации.Возможно, это поможет вам.

Microsoft хочет интегрировать Roslyn в будущую версию Visual Studio.Тогда можно будет просто скопировать код из VB в буфер обмена и вставить его как C # code .В прошлом году была также презентация об этом, возможно, такая же.

0 голосов
/ 24 февраля 2012

Хороший онлайн-конвертер кодов, который я использую все время: http://www.developerfusion.com/tools/convert/vb-to-csharp/

...