2014-01-09 35 views
1

雖然在從vb.net遷移到c#的過程中,我遇到了使用datatable的問題。所以,在這裏你看,我想通過引用的列標頭的名稱來從列#1字段的值:如何從列名中獲取字段值

在vb.net中,我能做到這一點:

Dim mydatatable as As New System.Data.DataTable 
Dim myvar as string 
myvar = mydatatable.Rows(1).Item("mycategory") 

但C#中沒有.item()。然而,有DataArray[],但它只接受整數。

something.InnerText = thisdata.Rows[1].ItemArray[1].ToString(); 

我說得對不對相信,我必須遍歷所有列標題匹配列的名稱,然後把它拿來的指數?或者有沒有辦法像我在vb.net一樣工作?

回答

2

Rows[1]返回第二行,它是DataRow類型。行也有幾個索引,它接受column nameDataColumn objectcolumn index等:

something.InnerText = thisdata.Rows[1]["mycategory"].ToString(); 

基本上線以上,相當於以下,其中行明確地存儲在本地變量:

DataRow row = thisdata.Rows[1]; 
something.InnerText = row["mycategory"].ToString(); 

但在這裏它是完全清楚發生了什麼。

+0

謝謝!我沒有意識到「行」是一個多維數組。我必須再等12分鐘來標記答案...... – bgmCoder

+0

@BGM不完全 - 行是包含DataRows的sinlge-dimiensional集合。但行有索引器。這與多維數組不同,它看起來像'rowsArray [rowIndex,columnIndex]' –

+1

啊。我很欣賞這個教訓。感謝您的澄清。 – bgmCoder

0

如果您有命名列,您可以在括號內引用這些列。

myvar = mydatatable.Rows[1]["mycategory"] 

您也可以使用索引。

myvar = mydatatable.Rows[1][1] 
+1

你有正確的答案 - 但謝爾蓋擊敗你... – bgmCoder

相關問題