2014-05-20 1 views
3

Je suis donc sur le point de créer mon premier système C#. J'utilise mon système vb.net pour l'utiliser comme référence.System.Data.Datarow C# erreur

C'est le code sur mon système vb.net:

Dim value As Integer = Val(dt.Rows(0).Item("TransID")) 

je devais utiliser un convertisseur en ligne et ce que je suis:

int value = double.Parse(dt.Rows[0].Item[TransID]); 

je suis arrivé lignes sous squiggly « article »- me disant que

erreur System.Data.DataRow « ne contient pas de définition de « Item » et aucune méthode d'extension » Il em » accepter un premier argument de type « System.Data.DataRow » n'a pu être trouvée (vous manque une directive à l'aide ou une référence d'assemblage?)

Quel pourrait être le problème?

+5

Vous utilisez 'double.Parse' pour assigner à un' int'. Quelque chose vous regarde un peu? –

Répondre

2

La ligne devrait

int value = double.Parse(dt.Rows[0]["TransID"].ToString()); 

dt.Rows[0] retourne la première ligne, dt.Rows[0]["TransID"] renvoie la valeur de la colonne "TransID" comme object de la première ligne. Comme Parse ne prend que des chaînes, pas des objets, vous avez également besoin de ToString().

Pour éviter ToString vous pouvez aussi utiliser ce qui suit, ce qui est encore mieux:

int value = (int)Convert.ToDouble(dt.Rows[0]["TransID"]); 
+0

Votre code fonctionne monsieur Thorsten. Je n'ai pas d'erreurs. : D Merci! – Jhayzt

2

Essayez ceci:

int value = double.Parse(dt.Rows[0]["TransID"]); 
+0

Hé là thanos! Merci d'avoir répondu! Bien que quand j'ai changé mon code à votre code j'ai eu une nouvelle erreur, "La meilleure méthode surchargée pour 'double.Parse (string)' a quelques arguments non valides" :( – Jhayzt

+0

@Jhayzt Cool, alors changez le à double valeur = double.Parse (dt.Rows [0] ["TransID"]) –

+1

Vous devez ajouter 'ToString' comme dans ma réponse. Le résultat de 'dt.Rows [0] [" TransID "]' est 'object', mais' double.Parse' nécessite un 'string'. –

0
dt.Rows[0]["TransID"] 

Cela devrait fonctionner.

+0

Cela ne compilera pas ;-) –

+0

J'ai placé 'Use this' dans le bloc de code, bien sûr, cela ne devrait pas être, donc il suffit de supprimer le 'Use this'. Je l'ai changé. – Complexity

+0

Merci pour l'édition ;-) –

0

Try this ...

int value = int.Parse(dt.Rows[0]["TransID"]); 
0
int value = int.Parse(dt.Rows[0]["TransID"]); 

ou vous pouvez également utiliser l'index de colonne si vous le connaissez:

En supposant que colonne requise est la 3ème colonne dans la date:

int value = int.Parse(dt.Rows[0][2]); 
Questions connexes