2011-03-02 74 views
3

我有一个数据行,但我怎么能转换为int?数据行转换成int

我尝试这样做,但它不工作。

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

行?也许是连续的场地? – Snowbear 2011-03-02 14:18:27

回答

2

你需要知道哪些指标你要的对象是,和铸造的为int,例如:

int value = (int)eersteRij[0]; 
+0

-1不会工作它的DataRow不是一个值..除非你已经定义了[Explicit cast](http://msdn.microsoft.com/en-us/library/xhbhezf4(v = vs.80).aspx)功能 – 2011-03-02 14:22:14

+0

固定它,你需要知道的数据是这当然指数。 – Femaref 2011-03-02 14:26:06

+0

和我删除我downvote^_^ – 2011-03-02 14:27:21

2

因为即使在层次结构的该级别你仍然有一个DataRow并且你不能将DataRow转换为int ..一个值可以被转换。

而且你为什么要转换整个的DataRow为int ..通常你想在一个行单元格得到值,因此尝试,财产以后这样的:

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

其中0可以更换由小区位置(INT)或列名称(字符串)

10

一个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"]); 
+0

没有tbl_klanten包含更多列。但与dsMovie =(DataSet)wsMovie.getKlantId();我只把klant_id放在tabel中。 – Steaphann 2011-03-02 14:19:53

+1

@Steaphann对不起,语言障碍正在伤害我。 klant_id在哪里?什么表,什么专栏? – Will 2011-03-02 14:23:15

+0

表是tbl_klanten,列是klant_id。 – Steaphann 2011-03-02 14:54:56

5

只需使用现场方法:

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

The Field method also supports nullable types

外地方法提供支持用于访问列作为可为空的 类型。如果在DataSet中的基础值是值,返回 可空类型都会有一个null值。

并请留意:

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

+1

欢呼声为最佳答案 – AnjumSKhan 2017-07-08 11:18:34

+1

同意 - 没有看得太深入,但我相信这可能会避免提到的其他方法的拳击税。但要小心,如果值是DBNull,会抛出错误。 查看此答案的更多详细信息:https://stackoverflow.com/questions/7104675/difference-between-getting-value-from-datarow – chadiusvt 2017-11-20 16:01:36