I've got this code, where ISTM I'm defensively coding against assigning nulls:
foreach (DataRow priceAndUsageVarianceRow in _dtUsage.Rows)
{
//var pauv = new PriceAndUsageVariance
//{
// Description = priceAndUsageVarianceRow["Description"].ToString(),
// Week1Usage = Convert.ToDouble(priceAndUsageVarianceRow["Week1Usage"]),
// Week2Usage = Convert.ToDouble(priceAndUsageVarianceRow["Week2Usage"]),
// UsageVariance = Convert.ToDouble(priceAndUsageVarianceRow["UsageVariance"]),
// Week1Price = Convert.ToDecimal(priceAndUsageVarianceRow["Week1Price"]),
// Week2Price = Convert.ToDecimal(priceAndUsageVarianceRow["Week2Price"]),
// PriceVariance = Convert.ToDecimal(priceAndUsageVarianceRow["PriceVariance"]),
// PriceVariancePercentage = Convert.ToDouble(priceAndUsageVarianceRow["PriceVariancePercentage"])
//};
// Got exception with the code above; trying to prevent it with this:
var pauv = new PriceAndUsageVariance();
pauv.Description = String.Empty;
pauv.Week1Usage = 0.0;
pauv.Week2Usage = 0.0;
pauv.UsageVariance = 0.0;
pauv.Week1Price = 0.00M;
pauv.Week2Price = 0.00M;
pauv.PriceVariance = 0.00M;
pauv.PriceVariancePercentage = 0.0;
if (null != priceAndUsageVarianceRow["Description"])
{
pauv.Description = priceAndUsageVarianceRow["Description"].ToString();
}
if (null != priceAndUsageVarianceRow["Week1Usage"])
{
pauv.Week1Usage = Convert.ToDouble(priceAndUsageVarianceRow["Week1Usage"]);
}
if (null != priceAndUsageVarianceRow["Week2Usage"])
{
pauv.Week2Usage = Convert.ToDouble(priceAndUsageVarianceRow["Week2Usage"]);
}
. . .
...yet I get, "Object cannot be cast from DBNull to other types" on a particular iteration on the last attempted assignment (to pauv.Week2Usage).
That field does appear in the class:
public class PriceAndUsageVariance
{
public String Description { get; set; }
public Double Week1Usage { get; set; }
public Double Week2Usage { get; set; }
public Double UsageVariance { get; set; }
public Decimal Week1Price { get; set; }
public Decimal Week2Price { get; set; }
public Decimal PriceVariance { get; set; }
public Double PriceVariancePercentage { get; set; }
}
...and the code runs fine for most of the records.
What would cause this exception, and how can I guard against it?