簡體   English   中英

將代碼段從VB.NET轉換為C#

[英]Convert code snippet from VB.NET to 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();

您的轉換忽略了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。

我一直使用的優秀在線代碼轉換器是http://www.developerfusion.com/tools/convert/vb-to-csharp/

我在演講中聽到了來自Microsoft Roslyn項目的消息。 也許可以幫到您。

Microsoft希望將Roslyn集成到將來的Visual Studio版本中。 然后可以將代碼從VB復制到剪貼板,並將其粘貼為C#代碼 去年也有關於這一主題的演講,也許是相同的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM