目前我正在这样做......
object s = new object();
s = mydatarow["mycolumn"];
我想做的是......
DataRow r = null;
r = mydatarow["mycolumn"];
我得到一个错误,说不能从对象隐藏到DataRow。
有更好的方法吗?
答案 0 :(得分:1)
看起来你做错了什么。
DataRow r = null;
r = mydatarow["mycolumn"];
mydatarow是DataRow本身。当您引用特定列时,您将获得表的“单元格”。 (它有类型对象,因为DataSets基本上是松散类型的)但你尝试将单元格分配给DataRow。
得到了吗?
答案 1 :(得分: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"];
答案 2 :(得分:1)
你可以试试这个:
DataRow r = null;
r = (DataRow) mydatarow["mycolumn"]; //*
这不太可能,但理论上可行,这将是有效的。
通常当我遇到这个问题时,我会坚持一个断点(我添加了//*
),看mydatarow["mycolumn"]
,然后让Visual Studio告诉我它实际上是什么类型(除其他外确定)。
答案 3 :(得分: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。 / p>
DataRow r = null;
r = mydatarow["mycolumn"];