2012-02-24 60 views
0

我试过了一些免费的代码转换器来转换下面的代码,但是没有成功。将代码片段从VB.NET转换为C#

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

你有什么问题?可能他们被使用ASP.NET内联代码弄糊涂了。 – 2012-02-24 10:47:29

+1

你没有选择工会左侧的任何物品! – munnster79 2012-02-24 10:55:55

回答

0
+0

它并没有真正帮助他(它试图转换他的代码示例时报告了一个InvalidOperationException),并且他提到他尝试了一些免费的代码转换器,当我的谷歌代码转换器出现时,在搜索结果列表中(首先查询“c#vb code converter”),这意味着他不太可能不知道该网站... – 2012-02-24 11:23:06

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

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

0

我在演示中听到了微软的Roslyn项目。也许这可以帮助你。

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