2012-02-03 111 views
3

如何將其轉換爲C#代碼?將VBNet LiNQ轉換爲C#

Dim newArray() as String = From sRow In iDatatable.Rows.Cast(Of DataRow)() Where sRow("iType").ToString = "ST" Select CStr(sRow("iResult"))).ToArray() 

我已經試過這個網站,但他們都沒有工作。

http://www.developerfusion.com/tools/convert/csharp-to-vb/ 
http://www.carlosag.net/Tools/CodeTranslator/ 

回答

2

我相信這將是equivelent:

string[] newArray = iDatatable.Rows.Cast<DataRow>() 
     .Where(sRow => sRow["iType"].ToString() == "ST") 
     .Select(sRow => sRow["iResult"].ToString()) 
     .ToArray(); 
1

完全一樣,有細微的差別。

string[] newArray = (from sRow in iDatatable.Rows.Cast<DataRow>() where sRow["iType"].ToString() == "ST" select (string)sRow["iResult"]).ToArray(); 
+0

我是一個VB的傢伙,慢慢遷移到C#。當我使用你的代碼時,出現一個錯誤,說'錯誤\t 1'System.Data.DataRowCollection'不包含'Cast'的定義和最好的擴展方法重載'System.Data.EnumerableRowCollectionExtensions.Cast (System.Data .Enumera bleRowCollection)'有一些無效的參數' – 2012-02-03 02:26:05

1

確保在命名空間之前有這個。

using System.Linq; 

然後用

string[] newArray = iDatatable.Rows.Cast<DataRow>() 
       .Where(sRow => sRow["iType"].ToString() == "ST") 
       .Select(sRow => sRow["iResult"].ToString()) 
       .ToArray();