2012-02-03 106 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();