2010-05-15 4 views
1

Il y a trois colonnes dans la variable A,B and C. Maintenant, chaque colonne est de type decimal. Maintenant, je fais dt.Columns["A"].Expression="B+C"; pour ajouter l'enregistrement de la colonne B et l'enregistrement de la colonne C. Maintenant, s'il y a une valeur de B or C est null puis addition de B et C sera nulle comme la valeur de B est 3 et la valeur C est null pour la première ligne alors B+C(3+null) sera null qui ne convient pas, le résultat de l'addition devrait être 3. Si je remplace 0 au lieu de null alors il sera ok.But whereever il y a une valeur nulle dans les documents qu'il devrait être le rester est et il ne doit pas être remplacé par 0 .que est valeur nulle ne doit pas être remplacé par0 et lorsque l'addition de la valeur nulle est effectuée avec une valeur décimale null, la valeur doit être considérée comme 0.Une valeur nulle doit être considérée comme 0 lorsque l'addition est faite avec la valeur décimale

Est-il possible, comment pouvons-nous faire cela?

EDIT Voir la réponse suivante où dt.Rows[0]["B"] = DBNull.Value; mais j'ai problème comme d'après mon code, je ne peux pas attribuer DBNull.Value directement dt.Rows[0]["B"] = DBNull.Value; je dois stocker dans une variable de type object comme Object obj; obj=DBNull.Value et puis cette valeur va à la table.Ensuite, il donne une erreur comme null value can not be stored to the column B.

+2

Votre patron vous demande ce que les ventes sont pour Janvier. 1,6 million, vous répondez. Février? 2,1 millions. Mars? Je ne sais pas. Quel est le total pour le trimestre? Est la réponse 3,7 millions, ou "je ne sais pas"? Répondre à 3,7 millions quand vous ne savez pas ce que les ventes pour Mars étaient * mensonges *. Êtes-vous sûr que vous voulez remplacer zéro par null? C'est dire que toute quantité dont vous ne connaissez pas la valeur est zéro; la quantité réelle pourrait être nulle part proche de zéro. –

Répondre

2

Essayez quelque chose comme ceci

dt.Columns["A"].Expression = "ISNULL(B, 0) + ISNULL(C, 0)"; 

test de travail complet:

DataTable dt = new DataTable(); 
dt.Columns.Add("A", typeof(decimal)); 
dt.Columns.Add("B", typeof(decimal)); 
dt.Columns.Add("C", typeof(decimal)); 

dt.Rows.Add(); 
dt.Rows[0]["B"] = DBNull.Value; 
dt.Rows[0]["C"] = 3; 

dt.Columns["A"].Expression = "ISNULL(B, 0) + ISNULL(C, 0)"; 
Console.WriteLine(dt.Rows[0]["A"]); 
+0

@Anthony Pegram, Monsieur, Qu'est-ce que signifie pour '?' Et que fait un? 0 + b ?? 0' faire? – Harikrishna

+0

@ Anthony, Sir, il donne une erreur 'DataSet ne supporte pas System.Nullable <>.' – Harikrishna

+0

J'ai mis à jour la réponse. Le message original n'était pas adapté à ce que vous essayiez de faire, je m'en excuse. –

Questions connexes