2012-02-14 125 views
5

我的代碼在C#中遇到問題。我已經建立了幾個DataTable,併爲它們分配了一個主鍵。我想要做的是從單個列中檢索單個行。C#:使用PrimaryKey從DataTable中檢索值

可以說我有這樣的代碼:

DataColumn Pcolumn = new DataColumn(); 
DataColumn[] key = new DataColumn[1]; 

Pcolumn.DataType = System.Type.GetType("System.Double"); 

Pcolumn.ColumnName = "length"; 
key[0] = Pcolumn; 


table6F.Columns.Add(Pcolumn); 
table6F.Columns.Add("Area", typeof(double)); 
table6F.Columns.Add("load", typeof(double)); 
table6F.Columns.Add("weigth", typeof(double)); 

table6F.PrimaryKey = key; 
table.Rows.Add(6.0, 14.0, 17.8 , 11.0); 
table.Rows.Add(7.0, 16.2 , 20.7 , 16.0); 

我想檢索第二行(20.7),我想「加載」來搜索7.0,主鍵列,在表。我虛擬測試做這樣的,只是爲了測試:

Object oV; 
double load; 

//Get an Table object given the specific row number, this dummy i always set to 0. 
// Given Column 
oV = table.Rows[0]["load"]; 
load = Convert.ToDouble(oV.ToString()); 

有沒有類似的方式來提取使用主鍵?

回答

6

可以從DataTable基於使用DataRowCollection.Find方法其主鍵檢索行的行。在你的情況下它會是:

DataRow matchingRow = table.Rows.Find(7.0D); 
double value = (double)matchingRow["load"]; 
+0

謝謝你們!實施了Enricos解決方案,它像一個魅力一樣工作! – erikduvet 2012-02-14 10:16:18

2

您可以使用查找方法來查找使用主鍵

DataRow row = dataTable.Rows.Find("your key"); 
if(null != row) 
{ 
    string value = row["ColumnName"]; 
}