C #: получение значения из DataTable с использованием PrimaryKey - PullRequest
5 голосов
/ 14 февраля 2012

У меня проблема с моим кодом в C #.Я настроил пару DataTables с первичным ключом, назначенным каждому из них.то, что я хочу сделать, это извлечь одну строку из одного столбца.

Допустим, у меня есть этот код:

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 ]

6 голосов
/ 14 февраля 2012

Вы можете извлечь строку из DataTable на основе ее первичного ключа, используя метод DataRowCollection.Find . В вашем случае это будет:

DataRow matchingRow = table.Rows.Find(7.0D);
double value = (double)matchingRow["load"];
2 голосов
/ 14 февраля 2012

Вы можете использовать метод Find, чтобы найти строку, используя первичный ключ

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