C#: 使用主键从 DataTable 中检索值

5

我在C#代码中遇到了问题。我已经设置了一些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 );

我希望能够从表格中获取第二行的“load”值(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个回答

7

您可以使用DataRowCollection.Find方法根据主键从DataTable中检索一行数据。在您的情况下,代码如下:

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

谢谢大家!我实现了Enrico的解决方案,它非常完美地运行了! - erikduvet

3
您可以使用Find方法,通过主键查找行。
DataRow row = dataTable.Rows.Find("your key");
if(null != row)
{
    string value = row["ColumnName"];
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接