0

現在、私はこれをやっています...

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

私がやりたいことは...

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

オブジェクトからDataRowに変換できないというエラーが表示されます。

これを行うより良い方法はありますか?

4

4 に答える 4

1

3 つのものがあります... 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 = mydatarow["mycolumn"];

mydatarow は DataRow そのものです。特定の列を参照すると、テーブルの「セル」が取得されます。(DataSet は基本的にゆるく型付けされているため、型オブジェクトがあります) しかし、セルを DataRow に割り当てようとします。

とった?

于 2010-03-16T18:39:26.270 に答える
1

これを試すことができます:

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

これが機能する可能性は低いですが、理論的には可能です。通常、このような問題が発生した場合は、ブレークポイント ( を追加した場所) に固執し、 を//*監視mydatarow["mycolumn"]して、Visual Studio に実際の型を教えてもらいます (とりわけ、決定する必要があること)。

于 2010-03-16T19:24:34.837 に答える
1

あなたが現在していることは...

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

最初の行で新しいオブジェクトが作成され、2 行目でそのオブジェクトが破棄され、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 に答える