2010-03-16 57 views
0

目前我在做這個...如何分配DataRow對象在.NET 1.1

object s = new object(); 
s = mydatarow["mycolumn"]; 

我想什麼做的是...

DataRow r = null; 
r = mydatarow["mycolumn"]; 

,我得到一個錯誤並表示無法將對象轉換爲DataRow。

有沒有更好的方法來做到這一點?

+0

請格式化您的代碼 – Andrey 2010-03-16 18:37:24

+0

您想完成什麼?你的代碼沒有意義。您尚未創建DataRow。你不能這樣創建一個--DataRow沒有公共構造函數。 – 2010-03-16 18:45:22

回答

1

你正在做什麼?

object s = new object(); 
s = mydatarow["mycolumn"]; 

這不是一個好主意,因爲第一行創建一個新的對象,然後將第二行扔掉該對象,並替換它來自DataRow中「mycolumn」列的值。這並沒有太大的傷害,除了它爲垃圾收集器創建額外的工作,沒有任何理由。取而代之的是,你應該這樣做:

object s = mydatarow["mycolumn"]; 

但是,如果你碰巧知道「mycolumn」包含一個字符串值,可以改爲做到這一點:

string s = (string)mydatarow["mycolumn"]; 

同樣,如果「mycolumn 「是一個整數列...

int x = (int)mydatarow["mycolumn"]; 

在任何情況下,你應該做到以下幾點,因爲它根本沒有任何意義,而框架是不夠好,告訴你,‘在mycolumn’值您的數據實際上,Row不是另一個DataRow。

DataRow r = null; 
r = mydatarow["mycolumn"]; 
1

看起來像你做錯了什麼。

DataRow r = null; 
r = mydatarow["mycolumn"]; 

mydatarow是DataRow本身。當你參考特定的列時,你會得到表格的「單元格」。 (它具有類型對象,因爲DataSets基本上是鬆散類型的),但您嘗試將單元指定給DataRow。

明白了嗎?

1

有三件事...一個DataTable(多行),一個TABLE的數據ROW(多個字段/列)以及各個列單元格本身。

DataTable oTbl = ResultSetFromYourQuery(); 
DataRow oDR = oTbl.Rows[0]; // Rows[0] is first row in a result table (zero-based) 
String ColumnValue = oDR["YourColumnName"]; 
1

你可以試試這個:

DataRow r = null; 
r = (DataRow) mydatarow["mycolumn"]; //* 

這是不可能的,但理論上是可能的,這將正常工作。 通常,當我遇到這個問題時,我會堅持在一個斷點(我添加了//*),看mydatarow["mycolumn"],並讓Visual Studio告訴我它實際是什麼類型(以及其他決定因素)。