Domanda

Al momento sto facendo questo ...

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

Quello che vorrei fare è ...

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

ed ottengo un errore che dice che non può convertirlo da oggetto a DataRow.

c'è un modo migliore di fare questo?

È stato utile?

Soluzione

Quello che stai facendo attualmente ...

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

Questa non è una buona idea, perché la prima riga crea un nuovo oggetto, e poi la seconda linea getta via l'oggetto e lo sostituisce con il valore della colonna "MyColumn" nel DataRow. Questo in realtà non molto male, se non che crea lavoro extra per il garbage collector per nessuna buona ragione. Invece di questo, si dovrebbe fare questo:

object s = mydatarow["mycolumn"];

Tuttavia, se vi capita di sapere che "MyColumn" contiene un valore di stringa, si può invece fare questo:

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

Analogamente, se "MyColumn" è una colonna integer ...

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

In nessun caso si deve effettuare le seguenti operazioni, perché semplicemente non ha alcun senso, e il quadro è abbastanza bello da dire che il valore "MyColumn" nel vostro DataRow non è, in realtà, un altro DataRow.

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

Altri suggerimenti

sembra che fai qualcosa di sbagliato.

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

myDataRow è DataRow sé. quando si fa riferimento alla colonna specifica si ottiene "cellula" della tabella. (Ha il tipo di oggetto, perché in fondo sono DataSet debolmente tipizzato), ma si tenta di assegnare cella DataRow.

capito?

Ci sono tre cose ... un DataTable (più righe), una riga di dati (più campi / colonne) di una tabella, e le singole celle delle colonne stesse.

DataTable oTbl = ResultSetFromYourQuery();
DataRow oDR = oTbl.Rows[0];  // Rows[0] is first row in a result table (zero-based)
String ColumnValue = oDR["YourColumnName"];

Si può provare questo:

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

E 'improbabile, ma teoricamente possibile, che questo lavoro. Di solito quando sto avendo problemi con questa roba mi bastone in un punto di interruzione (dove ho aggiunto //*), guardare mydatarow["mycolumn"], e Visual Studio mi dica che tipo sia in realtà (tra le altre cose per determinare).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top