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

C# 将VB.NET中的代码段转换为C,c#,.net,vb.net,linq,code-conversion,C#,.net,Vb.net,Linq,Code Conversion,我尝试了许多免费的代码转换器来转换下面的代码,但是没有成功 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.L

我尝试了许多免费的代码转换器来转换下面的代码,但是没有成功

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

我一直使用的好的在线代码转换器是

您的转换忽略了UCase,它在C中的等价物是ToUpperCase

但是,这不是执行不区分大小写的字符串比较的推荐方法

e、 Name.LocalName==searchName

应替换为以下内容:

String.Comparee.Name.LocalName、searchNamename、StringComparison.InvariantCultureIgnoreCase==0

还有,什么是propertyName?不管它是什么,它的值显然不依赖于e。您在第一个查询中为每个e选择了一个相同的东西,这是没有意义的。我猜你的意思是选择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,因为我不懂VB。

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


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

你有什么问题?他们可能被ASP.NET内联代码的使用弄糊涂了。您没有选择联盟左侧的任何项目!这对他没什么帮助,当他试图转换代码样本时,报告了一个InvalidoOperationException,另外他提到他尝试了许多免费的代码转换器,当我使用google代码转换器时,你的链接在搜索结果列表中排在第二位,查询c vb代码转换器的第一位,这意味着他不大可能不知道那个网站。。。
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();