将DataRow转换为整数

12

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

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

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

17

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

如果表 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"]);

没有 tbl_klanten 包含更多的列。但是使用 dsMovie = (DataSet)wsMovie.getKlantId(); 我只将 klant_id 放入表格中。 - Steaphann
1
@Steaphann 抱歉,语言障碍困扰着我。klant_id在哪里?是哪个表格的哪一列? - user1228
表名为tbl_klanten,列名为klant_id。 - Steaphann

14

只需使用Field方法:

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

Field方法还支持可空类型

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

请注意:

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


1
同意 - 我没有深入研究,但我相信这可能避免了其他方法所提到的装箱税。但要小心,如果值为DBNull,则会抛出错误。 有关更多详细信息,请参见此答案:https://dev59.com/l2w05IYBdhLWcg3wqzis - Soturi

2

您需要知道您想要的对象在哪个索引上,并将其转换为int类型,例如:

int value = (int)eersteRij[0];

-1 不起作用,因为它是 DataRow 而不是值... 除非你定义了一个显式转换函数。 - Shekhar_Pro
修复了,当然你需要知道数据所在的索引。 - Femaref

2
因为即使在那个层次上,你仍然有一个DataRow,而你无法将DataRow转换为int.. 但是可以转换值。
为什么要将整个DataRow转换为int..通常您想要获取行中的单元格中的值,因此尝试像这样做:
int value = (int)eersteRij.Items[0];

其中0可以替换为单元格位置(整数)或列名(字符串)


2
DataSet dataSet = getDataFromDatabase();
DataRow tableRow = dataSet.Tables[0].Rows[0];

int valueAsInteger = Convert.ToInt32(tableRow["COLUMN_NAME"]);

0
我倾向于在循环DataTable时使用IndexOf()

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


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