2010-10-13 9 views
2

J'ai un jeu de données de valeurs que je dois mettre dans une zone de texte. Cependant, il y a quelques valeurs de type decimal et double dans mon ensemble de données, donc j'ai besoin de les lancer toString(). De plus, parfois les valeurs de l'ensemble de données sont vides, donc avant de lancer toString() je dois vérifier s'il y a réellement une valeur là ou non. Ceci est la ligne échantillon:C# Comment vérifier s'il y a une valeur avant de convertir ToString()

je besoin d'un code qui fait quelque chose comme ça ...

if(ds.Tables[0].Rows[0].Field<decimal>("IndexPrethodni") !=null or something){ 
    Convert.ToString(ds.Tables[0].Rows[0].Field<decimal>("IndexPrethodni")); 
} 

I décimal connu est pas un type nullable. Existe-t-il une solution facile pour atteindre le résultat souhaité?

Répondre

1

chèque DBNull

si (ds.Tables [0] .Rows [0] .Field ("IndexPrethodni")! = DBNull.Value) {// convertir en chaîne }

2

Essayez

if(ds.Tables[0].Rows[0]["IndexPrethodni"] != DBNull.Value) 

Vous pouvez également vérifier la valeur à l'aide Convert.IsDBNull().

+0

Cela fonctionne très bien :)) – Nezir

1

Pour utiliser Convert.ToString vous avez besoin de ne pas vérifier la valeur nulle, parce que s'il y aura alors null aussi ne donnera aucune erreur et retourner en blanc ..

1

Vous devez vérifier la valeur isnt DBNull, donc quelque chose comme ça fonctionnerait

object columnValue = ds.Tables[0].Rows[0].Field<decimal>("IndexPrethodni"); 
if (object != System.DBNull.Value) Convert.ToString(columnValue); 
3

Personnellement, je l'envelopper comme ceci:

 var col = ds.Tables[0].Columns["IndexPrethodni"]; 
     var row = ds.Tables[0].Rows[0]; 
     if (!row.IsNull(col)) 
     { 
      string s = row[col].ToString(); 
      ... 
     } 

(la "via un objet de colonne" est la plus directe (= le plus rapide) indexeur)

+3

Comme toujours, j'apprends quelque chose de vous. – NotMe

2

J'utilise normalement une méthode telle que:

public T GetValue<T>(object source) 
{ 
    if (Convert.IsDBNull(source)) 
    return default(T); 

    return (T)source; 
} 

using (var reader = command.ExecuteReader()) 
{ 
    if (reader.Read()) 
    { 
    return GetValue<string>(reader["SomeColumn"]); 
    } 
} 
1

Pourquoi utilisez-vous pas le type Nullable pour vérifier une valeur?

if(ds.Tables[ 0 ].Rows[ 0 ].Field<decimal?>("IndexPrethodni").HasValue) 
{ 
    Convert.ToString(ds.Tables[ 0 ].Rows[ 0 ].Field<decimal>("IndexPrethodni")); 
} 
0

Si nous vérifions la valeur décimale est nulle ou non avant de se convertir à un autre type

decimal? d; 
if (!d.HasValue) 
{ 
//d is null 
}