将datarow转换为int

时间:2011-03-02 14:13:58

标签: c# int datarow

我有一个数据行,但是如何将其转换为int?

我试过这个,但它不起作用。

dsMovie = (DataSet)wsMovie.getKlantId();
            tabel = dsMovie.Tables["tbl_klanten"];
            eersteRij = tabel.Rows[0];
(Int32.Parse(eersteRij.ToString())

6 个答案:

答案 0 :(得分:12)

DataRow是一个对象;它不是整数。 DataRow包含一列或多列数据。您可以索引DataRow以访问这些coulmns的值。

如果表tbl_klanten包含一列,并且该列是整数,则可以执行以下操作:

var myInt = (int)eersteRij[0];

如果列是包含整数值的字符串,

var myInt = int.Parse(eersteRij[0]);

如果列名为klant_id ...

var myInt = (int)eersteRij["klant_id"];

如果列是包含整数值的字符串,

var myInt = int.Parse(eersteRij["klant_id"]);

答案 1 :(得分:7)

只需使用Field方法:

int result = row.Field<int>("ColName");

The Field method also supports nullable types

  

Field方法支持将列作为可空列进行访问   类型。如果DataSet中的基础值为Value,则返回   可空类型的值为null。

请注意:

  

Field方法不执行类型转换。如果需要类型转换,则应首先使用Field方法获取列值。然后应将列值转换为另一种类型。

答案 2 :(得分:2)

您需要知道所需对象所在的索引,并将其转换为int,例如:

int value = (int)eersteRij[0];

答案 3 :(得分:2)

因为即使在该级别的层次结构中,您仍然拥有DataRow,并且无法将DataRow转换为int ..但是可以转换值。

为什么要将整个DataRow转换为int ..通常你想在一行中获得一个,所以试试,像这样:

int value = (int)eersteRij.Items[0];

其中0可以由单元格位置(int)或列名称(字符串)

替换

答案 4 :(得分:0)

swapfile

答案 5 :(得分:0)

在遍历dataTable时,我倾向于使用IndexOf()

foreach (DataRow row in DataTable.table.Rows) { int index = dataTable.Rows.IndexOf(row); }