2012-02-24 59 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#代碼。去年也有關於這個的介紹,也許是同一個。