Как назначить объект datarow в .NET 1.1 - PullRequest
0 голосов
/ 16 марта 2010

В настоящее время я делаю это ...

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

То, что я хотел бы сделать, это ...

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

и я получаю сообщение об ошибке, в котором говорится, что невозможно преобразовать объект в DataRow.

есть ли лучший способ сделать это?

Ответы [ 4 ]

1 голос
/ 16 марта 2010

Что ты сейчас делаешь ...

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

Это не очень хорошая идея, потому что первая строка создает новый объект, а затем вторая строка отбрасывает этот объект и заменяет его значением из столбца «mycolumn» в DataRow. Это не очень больно, за исключением того, что это создает дополнительную работу для сборщика мусора без уважительной причины. Вместо этого вы должны сделать это:

object s = mydatarow["mycolumn"];

Однако, если вы знаете, что «mycolumn» содержит строковое значение, вы можете вместо этого сделать следующее:

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

Аналогично, если mycolumn является целочисленным столбцом ...

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

Ни при каких обстоятельствах вы не должны делать следующее, потому что это просто не имеет никакого смысла, и фреймворк достаточно хорош, чтобы сказать вам, что значение "mycolumn" в вашем DataRow фактически не является другим DataRow. 1013 *

DataRow r = null;
r = mydatarow["mycolumn"];
1 голос
/ 16 марта 2010

Есть три вещи: DataTable (несколько строк), строка данных (несколько полей / столбцов) таблицы и сами ячейки отдельных столбцов.

DataTable oTbl = ResultSetFromYourQuery();
DataRow oDR = oTbl.Rows[0];  // Rows[0] is first row in a result table (zero-based)
String ColumnValue = oDR["YourColumnName"];
1 голос
/ 16 марта 2010

Вы можете попробовать это:

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

Маловероятно, но теоретически возможно, что это будет работать.Обычно, когда у меня возникают проблемы с этим материалом, я втыкаю точку останова (где я добавил //*), смотрю mydatarow["mycolumn"] и заставляю Visual Studio сказать мне, какой это тип на самом деле (среди прочего, чтобы определить).

1 голос
/ 16 марта 2010

похоже, что вы делаете что-то не так.

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

mydatarow - это сама DataRow. когда вы ссылаетесь на определенный столбец, вы получаете «ячейку» таблицы. (он имеет тип объекта, потому что DataSets в основном свободно набран), но вы пытаетесь присвоить ячейку DataRow.

понял?

...