C#:使用PrimaryKey从DataTable中检索值

时间:2012-02-14 09:46:30

标签: c# ado.net datatable primary-key

我的C#代码存在问题。我已经设置了几个DataTables,并为每个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());

是否有类似的方法使用主键提取?

2 个答案:

答案 0 :(得分:6)

您可以使用DataTable方法根据主键从DataRowCollection.Find检索行。在你的情况下,它将是:

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

答案 1 :(得分:2)

您可以使用Find方法查找使用主键

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