2011-03-02 8 views
3

J'ai un datarow, mais comment puis-je le convertir en int?Convertir datarow en int

J'ai essayé, mais cela ne fonctionne pas.

dsMovie = (DataSet)wsMovie.getKlantId(); 
      tabel = dsMovie.Tables["tbl_klanten"]; 
      eersteRij = tabel.Rows[0]; 
(Int32.Parse(eersteRij.ToString()) 
+1

ligne? Peut-être un champ d'affilée? – Snowbear

Répondre

2

Vous aurez besoin de savoir quel index l'objet que vous voulez est, et à un casting qui int, par exemple:

int value = (int)eersteRij[0]; 
+0

-1 ne fonctionnera pas son DataRow n'est pas une valeur .. sauf si vous avez défini un [Explicit cast] (http://msdn.microsoft.com/en-us/library/xhbhezf4 (v = vs.80) .aspx) La fonction –

+0

l'a corrigé, vous devez savoir dans quel index se trouvent les données. – Femaref

+0

et j'ai supprimé mon downvote^_^ –

2

Parce que même à ce niveau de la hiérarchie que vous avez encore un DataRow et vous ne pouvez pas convertir un DataRow en int .. une valeur pourrait être convertie cependant.

Et pourquoi êtes-vous en train de convertir toute DataRow à .. généralement vous souhaitez obtenir une valeur dans une cellule à une rangée alors essayez, Somthing comme ceci:

int value = (int)eersteRij.Items[0]; 

où 0 peut être remplacé par la position de la cellule (int) ou le nom de la colonne (chaîne)

10

Un DataRow est un objet; ce n'est pas un nombre entier. Un DataRow contient une ou plusieurs colonnes de données. Vous pouvez indexer dans le DataRow pour accéder aux valeurs de ces coulmns.

Si la table tbl_klanten contient une colonne, et que la colonne est un entier, vous pouvez effectuer les opérations suivantes:

var myInt = (int)eersteRij[0]; 

si la colonne est une chaîne contenant la valeur d'un nombre entier,

var myInt = int.Parse(eersteRij[0]); 

Si la colonne est nommée klant_id ...

var myInt = (int)eersteRij["klant_id"]; 

si la colonne est une chaîne contenant la valeur d'un nombre entier,

var myInt = int.Parse(eersteRij["klant_id"]); 
+0

Aucun tbl_klanten contient plus de colonnes. mais avec dsMovie = (DataSet) wsMovie.getKlantId(); Je n'ai mis que le klant_id dans tabel. – Steaphann

+1

@Steaphann désolé, la barrière de la langue me fait mal. Où est le klant_id? Quelle table, quelle colonne? – Will

+0

la table est tbl_klanten et la colonne est klant_id. – Steaphann

5

suffit d'utiliser la méthode de champ:

int result = row.Field<int>("ColName"); 

The Field method also supports nullable types:

La méthode de champ fournit un support pour accéder aux colonnes en tant que types null . Si la valeur sous-jacente dans le DataSet est Value, le type nullable retourné aura la valeur null.

Et s'il vous plaît Important:

La méthode de champ ne fonctionne pas les conversions de type. Si la conversion de type est requise, vous devez d'abord obtenir la valeur de la colonne en utilisant la méthode Field. La valeur de la colonne doit ensuite être convertie en un autre type.

+1

acclamations pour la meilleure réponse – AnjumSKhan

+1

D'accord - ne pas avoir regardé trop en profondeur, mais je crois que cela peut éviter la taxe de boxe des autres méthodes mentionnées. Attention cependant, va lancer une erreur si la valeur est DBNull. Voir cette réponse pour plus de détails: https://stackoverflow.com/questions/7104675/difference-between-getting-value-from-datarow – chadiusvt