2010-03-16 17 views
0

Je fais cela ...Comment attribuer un objet datarow actuellement dans .NET 1.1

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

Ce que je voudrais faire est ...

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

et je reçois une erreur disant que ne peut pas passer de l'objet à DataRow.

est-il une meilleure façon de le faire?

+0

veuillez formater votre code – Andrey

+0

Qu'essayez-vous d'accomplir? Votre code n'a aucun sens. Vous n'avez pas créé de DataRow. Vous ne pouvez pas en créer un - DataRow n'a pas de constructeur public. –

Répondre

1

Qu'est-ce que vous êtes en train de faire ...

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

Ce n'est pas une bonne idée, parce que la première ligne crée un nouvel objet, puis la deuxième ligne jette cet objet et le remplace par la valeur de la colonne "mycolumn" dans le DataRow. Cela ne fait pas vraiment mal, sauf que cela crée un travail supplémentaire pour le garbage collector sans raison valable. Au lieu de cela, vous devriez faire ceci:

object s = mydatarow["mycolumn"]; 

Toutefois, si vous connaissez que « mycolumn » contient une valeur de chaîne, vous pouvez plutôt faire:

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

De même, si « mycolumn »est une colonne entière ...

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

en aucun cas vous ne devez faire ce qui suit, car il ne suffit pas de sens, et le cadre est assez agréable pour vous dire que la « valeur mycolumn » dans vos données Row n'est pas, en fait, un autre DataRow.

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

Apparemment, vous faites quelque chose de mal.

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

mydatarow est DataRow lui-même. lorsque vous faites référence à une colonne spécifique, vous obtenez "cellule" de la table. (il a un objet type, car DataSets est fondamentalement typé de manière lâche) mais vous essayez d'assigner une cellule à DataRow.

l'avez-vous?

1

Il y a trois choses ... un DataTable (plusieurs lignes), une ROW de données (plusieurs champs/colonnes) d'une TABLE, et les cellules de colonnes individuelles elles-mêmes.

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

Vous pouvez essayer ceci:

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

Il est peu probable, mais théoriquement possible, que cela va fonctionner. Habituellement, lorsque j'ai des problèmes avec ce genre de choses, je vais coller dans un point d'arrêt (où j'ai ajouté //*), regarder mydatarow["mycolumn"], et Visual Studio me dire quel type il est réellement (entre autres choses à déterminer).