C# 如何以更好的方式分配DBNull?
我需要解析一个C# 如何以更好的方式分配DBNull?,c#,.net,parsing,datarow,dbnull,C#,.net,Parsing,Datarow,Dbnull,我需要解析一个DataRow中的值,并将其分配给另一个DataRow。如果输入有效,则需要将其解析为一个double,或者在输出中添加一个DBNull值。我正在使用以下代码: public double? GetVolume(object data) { string colValue = data == null ? string.Empty : data.ToString(); double volume; if (!Double.TryParse(colValue
DataRow
中的值,并将其分配给另一个DataRow
。如果输入有效,则需要将其解析为一个double
,或者在输出中添加一个DBNull
值。我正在使用以下代码:
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;
}
有更好的方法吗?像这样简单的事情怎么样:
double dbl;
if (double.TryParse(theRowInput[0] as string, out dbl))
theRowOutput[0] = dbl;
else
theRowOutput[0] = DbNull.Value;
编辑:此代码假定输入为字符串类型。你不是100%清楚的。如果是另一种类型,则需要稍微调整上面的代码。如何:
public double? GetVolume(object data)
{
double value;
if (data != null && double.TryParse(data.ToString(), out value))
return value;
return null;
}
public void Assign(DataRow theRowInput, DataRow theRowOutput)
{
theRowOutput[0] = (object)GetVolume(theRowInput[0]) ?? DBNull.Value;
}
这是我的两分钱:
decimal dParse;
if ((cells[13] == "" ? LP_Eur = DBNull.Value : (Decimal.TryParse(cells[13], NumberStyles.Number, NumberFormat, out dParse) ? LP_Eur = dParse : LP_Eur = null)) != null) {
throw new Exception("Ivalid format");
}
作为字符串
并不完全相同-例如,原始单元格可以是int
。实际上,Convert.ToDouble
可能是一个更好的选择总体来说…@Marc你从哪里得到的原始单元格可能是int
?纯粹看代码,除了对象
,它对源代码一无所知…@Marc他正在从数据库中读取它。我想他知道那种类型。我猜他不是显式的。@Adeel我们通过索引器分配给一个DataRow
单元格,它本质上涉及装箱。。。