2012-02-14 20 views
5

Tôi gặp sự cố với mã của tôi trong C#. Tôi đã thiết lập một vài DataTables với một khóa chính được gán cho mỗi khóa. những gì tôi muốn làm là lấy một hàng đơn từ một cột.C#: Lấy giá trị từ DataTable bằng PrimaryKey

phép nói rằng tôi có mã này:

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

Và tôi muốn lấy lại sự "tải" cho hàng thứ hai (20,7), tôi muốn tìm kiếm 7.0, cột khóa chính, trong Bàn. Tôi giả thử nghiệm để làm như thế này, chỉ để kiểm tra:

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ó cách nào tương tự để trích xuất bằng khóa chính không?

Trả lời

6

Bạn có thể lấy một hàng từ một DataTable dựa trên khóa chính của nó bằng cách sử dụng phương pháp DataRowCollection.Find. Trong trường hợp của bạn, nó sẽ là:

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

Cảm ơn các bạn! Thực hiện giải pháp Enricos và nó hoạt động như một sự quyến rũ! – erikduvet

2

Bạn có thể sử dụng phương pháp Find để tìm một hàng sử dụng chính chính

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