可空值是否会同时考虑 null ("") 和 DBNull
Will nullable value consider both null ("") and DBNull at the same time
我有一个条件,如果数据库中的 a 列有 "" 或 DBNull,它应该将其视为 0。
我可以把它写成一行吗?无论如何,我做了很长一段时间的编码。有没有可能更短的方法来实现这个。
这是我的代码:
public string difference(object val1, object val2)
{
double value1 = 0;
double value2 = 0;
if (val1 == "" && val2 == "")
{
value3 = value1 - value2;
}
else if (val1 != "" && val2 != "")
{
if (val1 != DBNull.Value && val2 != DBNull.Value)
{
value1 = Convert.ToDouble(val1);
value2 = Convert.ToDouble(val2);
value3 = value1 - value2;
}
else if (val1 == DBNull.Value && val2 == DBNull.Value)
{
value3 = value1 - value2;
}
else if (val1 != DBNull.Value && val2 == DBNull.Value)
{
value1 = Convert.ToDouble(val1);
value3 = value1 - value2;
}
else
{
value2 = Convert.ToDouble(val2);
value3 = value1 - value2;
}
}
else if (val1 == "" && val2 != "")
{
if (val2 == DBNull.Value)
{
value3 = value1 - value2;
}
else
{
value2 = Convert.ToDouble(val2);
value3 = value1 - value2;
}
}
else
{
if (val1 == DBNull.Value)
{
value3 = value1 - value2;
}
else
{
value1 = Convert.ToDouble(val1);
value3 = value1 - value2;
}
}
return Convert.ToString(value3);
}
任何帮助将不胜感激。
你的方法可以简单地写成
public double Difference(object val1, object val2)
{
double value1;
double value2;
double.TryParse(val1.ToString(), out value1);
double.TryParse(val2.ToString(), out value2);
return value1 - value2;
}
假设 val1
和 val2
永远不会为空(您的代码也是如此)。我还把 return 类型设为 double
。如果你想把它作为字符串调用 double.ToString
方法。
我有一个条件,如果数据库中的 a 列有 "" 或 DBNull,它应该将其视为 0。
我可以把它写成一行吗?无论如何,我做了很长一段时间的编码。有没有可能更短的方法来实现这个。
这是我的代码:
public string difference(object val1, object val2)
{
double value1 = 0;
double value2 = 0;
if (val1 == "" && val2 == "")
{
value3 = value1 - value2;
}
else if (val1 != "" && val2 != "")
{
if (val1 != DBNull.Value && val2 != DBNull.Value)
{
value1 = Convert.ToDouble(val1);
value2 = Convert.ToDouble(val2);
value3 = value1 - value2;
}
else if (val1 == DBNull.Value && val2 == DBNull.Value)
{
value3 = value1 - value2;
}
else if (val1 != DBNull.Value && val2 == DBNull.Value)
{
value1 = Convert.ToDouble(val1);
value3 = value1 - value2;
}
else
{
value2 = Convert.ToDouble(val2);
value3 = value1 - value2;
}
}
else if (val1 == "" && val2 != "")
{
if (val2 == DBNull.Value)
{
value3 = value1 - value2;
}
else
{
value2 = Convert.ToDouble(val2);
value3 = value1 - value2;
}
}
else
{
if (val1 == DBNull.Value)
{
value3 = value1 - value2;
}
else
{
value1 = Convert.ToDouble(val1);
value3 = value1 - value2;
}
}
return Convert.ToString(value3);
}
任何帮助将不胜感激。
你的方法可以简单地写成
public double Difference(object val1, object val2)
{
double value1;
double value2;
double.TryParse(val1.ToString(), out value1);
double.TryParse(val2.ToString(), out value2);
return value1 - value2;
}
假设 val1
和 val2
永远不会为空(您的代码也是如此)。我还把 return 类型设为 double
。如果你想把它作为字符串调用 double.ToString
方法。