2014-05-20 58 views
3

因此,我正在創建我的第一個C#系統。我使用我的vb.net系統作爲我的參考。System.Data.Datarow C#錯誤

這是我的vb.net系統上的代碼:

Dim value As Integer = Val(dt.Rows(0).Item("TransID")) 

我不得不使用在線轉換器,這是我得到了什麼:

int value = double.Parse(dt.Rows[0].Item[TransID]); 

我在「項目波浪線「 - 告訴我

錯誤System.Data.DataRow'沒有包含'Item' 的定義,也沒有擴展方法'It他們的人接受型 的第一個參數‘的System.Data.DataRow’可以找到(是否缺少使用 指令或程序集引用?)

可能是什麼問題呢?

+5

您正在使用'double.Parse'分配給一個'int'。任何東西看起來都有點偏離你? –

回答

2

該行應該讀

int value = double.Parse(dt.Rows[0]["TransID"].ToString()); 

dt.Rows[0]返回第一行,dt.Rows[0]["TransID"]返回爲object從第一行的 「TRANSID」 列的值。由於Parse只需要字符串,而不是對象,因此您還需要ToString()

爲了避免ToString你也可以使用下面的,這甚至更好:

int value = (int)Convert.ToDouble(dt.Rows[0]["TransID"]); 
+0

您的代碼工作先生Thorsten。我沒有錯誤。 :D謝謝! – Jhayzt

2

試試這個:

int value = double.Parse(dt.Rows[0]["TransID"]); 
+0

Hey than thanos!感謝你的回答!雖然當我將代碼更改爲代碼時,我得到一個新錯誤, 「最好的重載方法匹配'double.Parse(string)'有一些無效參數」 :( – Jhayzt

+0

@Jhayzt酷,然後將其更改爲double value = double.Parse(dt。行[0] [「TransID」]) –

+1

您需要在我的答案中添加'ToString'。 'dt.Rows [0] [「TransID」]的結果是'object',但'double.Parse'需要一個'string'。 –

0
dt.Rows[0]["TransID"] 

這應該是工作。

+0

這不會編譯;-) –

+0

我已經在代碼塊中放置'Use this',當然,這不應該,所以只要刪除'Use this'即可。我改變了它。 – Complexity

+0

感謝您的編輯;-) –

0

嘗試......

int value = int.Parse(dt.Rows[0]["TransID"]); 
0
int value = int.Parse(dt.Rows[0]["TransID"]); 

或者你也可以使用列的索引,如果你知道它:

假設需要的列是數據表中的第3列:

int value = int.Parse(dt.Rows[0][2]);