2014-01-07 80 views
0

我重複使用數據表中的行 -使用列名稱從列中獲取數據?

DataTable dt = getDataTableFromSomeWhere(); 
DataRow row = null; 
//for loop 
row = dt.Rows[i]; 

我如何獲得第i行的列的值,通過使用列的名字嗎? 我可以迭代使用dt.Columns [j]的列,但那不是我想要的。

回答

3

只需使用indexer taking a string parameter

object value = row["ColumnName"]; 

編輯:假設值在適當的類型已被提取,我通常只投給你想要的CLR類型:

int someIntegerValue = (int) row["ColumnName"]; 

有時您可能需要兩個級別的投射(一個用於取消裝箱,然後另一個用於執行實際值轉換),但這取決於您需要的內容。

我會推薦反對轉換爲字符串表示,然後解析,除非你真的沒有別的選擇。過多的字符串轉換不僅會影響性能(通常不相關),而且會導致選擇不當的類型。

+0

然後使用value.ToString()來獲取對象所包含的值? – Steam

+0

@blasto:嗯,我通常只會投... –

+0

順便說一句,我忘了問,如果給定的列名不存在會發生什麼? – Steam

0
string name = (string) row["ColumnName"]; 

int i = Convert.ToInt32(row["ColumnName"]); 

按名稱引用是稍微有點慢,但這樣更具可讀性。

+1

如果插入或重新排列列,按名稱索引也更安全。 –