我尝试了许多免费的代码转换器来转换以下内容,但没有成功。
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();
答案 0 :(得分:1)
您的转换遗漏了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。
答案 1 :(得分:0)
我一直使用的良好在线代码转换器是http://www.developerfusion.com/tools/convert/vb-to-csharp/
答案 2 :(得分:0)
我在演示文稿中听到了Microsoft的Roslyn项目。也许这可以帮到你。
Microsoft希望在将来的Visual Studio版本中集成 Roslyn 。然后就可以将代码从VB复制到剪贴板并将其粘贴为C#代码。去年也有一个关于这个的介绍,也许是同一个。