0

目前我正在这样做......

object s = new object();
s = mydatarow["mycolumn"];

我想做的是...

DataRow r = null;
r = mydatarow["mycolumn"];

我收到一个错误,说不能从对象转换为 DataRow。

有更好的方法吗?

4

4 回答 4

1

看起来你做错了什么。

DataRow r = null;
r = mydatarow["mycolumn"];

mydatarow 是 DataRow 本身。当您引用特定列时,您会得到表格的“单元格”。(它具有类型对象,因为 DataSet 基本上是松散类型的)但是您尝试将单元格分配给 DataRow。

知道了?

于 2010-03-16T18:39:26.270 回答
1

一共有三样东西……一个DataTable(多行),一个TABLE的数据ROW(多个字段/列),以及各个列单元格本身。

DataTable oTbl = ResultSetFromYourQuery();
DataRow oDR = oTbl.Rows[0];  // Rows[0] is first row in a result table (zero-based)
String ColumnValue = oDR["YourColumnName"];
于 2010-03-16T19:18:34.040 回答
1

你可以试试这个:

DataRow r = null;
r = (DataRow) mydatarow["mycolumn"]; //*

这不太可能,但理论上可能会奏效。通常,当我在处理这些东西时遇到问题时,我会坚持一个断点(我在其中添加//*), watchmydatarow["mycolumn"]并让 Visual Studio 告诉我它实际上是什么类型(以及其他要确定的东西)。

于 2010-03-16T19:24:34.837 回答
1

你现在在做什么...

object s = new object();
s = mydatarow["mycolumn"];

这不是一个好主意,因为第一行创建了一个新对象,然后第二行丢弃了该对象并将其替换为 DataRow 中“mycolumn”列中的值。这并没有太大的伤害,只是它无缘无故地为垃圾收集器创造了额外的工作。取而代之的是,您应该这样做:

object s = mydatarow["mycolumn"];

但是,如果您碰巧知道“mycolumn”包含一个字符串值,您可以这样做:

string s = (string)mydatarow["mycolumn"];

同样,如果“mycolumn”是一个整数列...

int x = (int)mydatarow["mycolumn"];

在任何情况下,您都不应该执行以下操作,因为它根本没有任何意义,而且框架足以告诉您 DataRow 中的“mycolumn”值实际上不是另一个 DataRow。

DataRow r = null;
r = mydatarow["mycolumn"];
于 2010-03-16T20:42:41.810 回答