将代码段从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();
您的转换忽略了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/