如何在.NET 1.1中分配数据行对象

时间:2010-03-16 18:33:37

标签: c# .net-1.1 datarow

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

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

我想做的是......

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

我得到一个错误,说不能从对象隐藏到DataRow。

有更好的方法吗?

4 个答案:

答案 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"];