将代码段从VB.NET转换为C#

本文关键字:转换 NET VB 代码 | 更新日期: 2023-09-27 18:25:35

我尝试了许多免费的代码转换器来转换以下部分,但没有成功。

 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();

将代码段从VB.NET转换为C#

您的转换忽略了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();

我只是不知道如何在C#中表示Select <<%= propertyName %>><%= a.Value %></>,因为我不知道VB.

我在一次演示中听到了微软Roslyn项目的消息。也许这对你有帮助。

Microsoft希望在未来的Visual Studio版本中集成Roslyn。然后就可以将代码从VB复制到剪贴板,并将其粘贴为C#代码。去年也有一个关于这方面的介绍,也许是同一个。

我一直使用的好的在线代码转换器http://www.developerfusion.com/tools/convert/vb-to-csharp/