Comment puis-je attribuer une DBNull dans une meilleure façon?
J'ai besoin d'analyser une valeur à partir d'une DataRow
et de l'affecter à une autre DataRow
. Si l'entrée est valide, alors j'ai besoin de l'analyser pour un double
, ou bien ajouter un DBNull
de la valeur à la sortie. Je suis en utilisant le code suivant:
public double? GetVolume(object data)
{
string colValue = data == null ? string.Empty : data.ToString();
double volume;
if (!Double.TryParse(colValue.ToString(), out volume))
{
return null;
}
return volume;
}
public void Assign(DataRow theRowInput,DataRow theRowOutput)
{
double? volume = GetVolume(theRowInput[0]);
if(volumne.HasValue)
theRowOutput[0] = volume.value;
else
theRowOutput[0] = DbNull.Value;
return theRowOutput;
}
Est-il un meilleur moyen de le faire?
OriginalL'auteur Mike | 2011-02-17
Vous devez vous connecter pour publier un commentaire.
Comment sur:
nous sommes de l'affectation à un
DataRow
de la cellule par l'indexeur, qui intrinsèquement implique de boxe...+1 et Félicitations pour la traversée de 200k
OriginalL'auteur Marc Gravell
Que penser de quelque chose de simple comme ceci:
EDIT: Ce code suppose l'entrée est de type chaîne de caractères. Vous n'étiez pas 100% clair. Si c'était un autre type, le code ci-dessus devrait être modifié légèrement.
as string
n'est pas tout à fait le même - la cellule d'origine pourrait être unint
, par exemple. En réalité,Convert.ToDouble
peut être un meilleur choix global...Où avez-vous l'original de la cellule pourrait être
int
?Purement regardant le code, qui ne sait rien au sujet de la source autres que
object
....Il est de la lecture à partir d'une base de données. Je suppose qu'il connaissait le type. Je suppose qu'il n'était pas explicite.
OriginalL'auteur Jonathan Wood
Voici mes deux désordre cents:
OriginalL'auteur Serge