【问题标题】:Convert code snippet from VB.NET to C#将代码片段从 VB.NET 转换为 C#
【发布时间】:2012-02-24 10:45:28
【问题描述】:

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

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

【问题讨论】:

  • 您遇到了什么问题?可能他们对使用 ASP.NET 内联代码感到困惑。
  • 您没有选择并集左侧的任何项目!

标签: c# .net vb.net linq code-conversion


【解决方案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 &lt;&lt;%= propertyName %&gt;&gt;&lt;%= a.Value %&gt;&lt;/&gt;,因为我不懂 VB。

【讨论】:

    【解决方案2】:

    我在一次演示中从 Microsoft 的 Roslyn 项目中获悉。也许这可以帮助你。

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

      • 它并没有真正帮助他(它在尝试转换他的代码示例时报告一个 InvalidOperationException),而且他提到他tried a number of freely available code converters,当我谷歌“代码转换器”时,你的链接排在第二位在搜索结果列表中(首先是查询“c# vb code converter”),这意味着他不太可能不知道那个网站......
      猜你喜欢
      • 1970-01-01
      • 2012-10-17
      • 2012-02-09
      • 2010-11-19
      • 2016-12-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多