2013-01-16 106 views
2

我有以下的VB代碼:與轉換VB工作,C#代碼

Dim dt As DataTable = DAL.WMS_Collaboration_Fetch(0).Tables(0) 

If dt.Rows.Count > 0 Then 
    'Bind Dataset to Gridview 
    Dim _WMS_CollaborationInfo As New WMS_CollaborationInfo 
    With _WMS_CollaborationInfo 
     .CollaborationName = dt.Rows(0).Item["CollaborationName").ToString 
     .CollaborationID = dt.Rows(0).Item("CollaborationID").ToString 
    End With 

它轉換成C#代碼:

DataTable dt = DAL.WMS_Collaboration_Fetch(0).Tables(0); 

if (dt.Rows.Count > 0) { 
    //Bind Dataset to Gridview 
    WMS_CollaborationInfo _WMS_CollaborationInfo = new WMS_CollaborationInfo(); 
    { 
     _WMS_CollaborationInfo.CollaborationName = dt.Rows[0].Item["CollaborationName"].ToString; 
     _WMS_CollaborationInfo.CollaborationID = dt.Rows[0].Item["CollaborationID"].ToString; 
    } 

我,但是,無法運行C#代碼。在VB中,表列,使用數據表,是由剛剛在列名傳遞(當然,我不知道很多關於VB),例如「CollaborationID」在

dt.Rows(0).Item("CollaborationID").ToString 

訪問,請什麼是C#相當於讀使用DataTable的表中的數據?我只是指如何重新編寫我的C#代碼,以便它能夠正常工作。

+4

什麼? 「我無法運行C#代碼」太含糊。你有什麼例外嗎?任何編譯器錯誤?請清楚 –

回答

5

Indexers在C#中使用方括號 - []。您也無需訪問.Item

_WMS_CollaborationInfo.CollaborationID = 
      dt.Rows[0]["CollaborationID"].ToString(); 
+1

IIRC,整個屬性'Item()'是索引器的VBism。所以它可能只是'行[0] [「CollaborationID」]' – millimoose

+0

由於某些原因,轉換器無法解決這個問題。由於我使用VB.Net,我有相反的問題,從方括號到括號。 – Wade73

+1

@millimoose - 它是DataRow對象的一部分:http://msdn.microsoft.com/en-us/library/system.data.datarow.item.aspx – Oded

5

在C#中,方法和索引器之間存在區別。第一個使用圓括號,第二個方括號。這讓我花了一段時間從VB中移出,並在兩邊使用括號。

嘗試:

dt.Rows[0].Item["CollaborationID"].ToString() 

編輯:VB.NET和C#比較

我用來指代這種小抄的時候,檢查出的數組一節: http://www.harding.edu/fmccown/vbnet_csharp_comparison.html

+0

我有在轉換點完成此操作。問題已更新。 –

+0

你能再詳細一點嗎?你遇到了什麼錯誤?上面的代碼應該允許您從表中讀取數據。 – Ulises

+0

我無法看到這樣的代碼書面表...但感謝鏈接 –