2012-02-14 15 views
5

Ho un problema con il mio codice in C#. Ho creato un paio di DataTable con una chiave primaria assegnata a ciascuno di essi. quello che voglio fare è recuperare una singola riga da una singola colonna.C#: recupero del valore da DataTable utilizzando PrimaryKey

Diciamo che ho questo codice:

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); 

E voglio recuperare il il "carico" per la seconda fila (20,7), vorrei cercare 7.0, colonna della chiave primaria, nel Tavolo. Ho provato il dummy per fare così, solo per testare:

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()); 

C'è un modo simile per estrarre utilizzando la chiave primaria?

risposta

6

è possibile recuperare una riga da una DataTable in base alla sua chiave primaria utilizzando il metodo DataRowCollection.Find. Nel tuo caso sarebbe:

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

Grazie ragazzi! Implementata soluzione Enricos e ha funzionato come un fascino! – erikduvet

2

È possibile utilizzare il metodo Find per trovare una fila utilizzando chiave primaria

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