C# - 处理数据库类型可能是十进制或双精度

时间:2016-02-17 00:53:17

标签: c#

我正在使用以下代码将数据从数据库导入到表中:

YES

问题是,有时数据库可能会将这些存储为小数,有时是双倍。如果类型是小数,我怎样才能转换使用public double[,] toValueArray(string fieldPrefix, int firstIndex, int lastIndex) { // return a bunch of value columns as a double array double[,] outArr = new double[TableRowCount,lastIndex-firstIndex+1]; for (int i = firstIndex; i <= lastIndex; i++) { var col = TheDataTable.Columns[fieldPrefix + i]; int r = -1; foreach (DataRow row in TheDataTable.Rows) { outArr[++r, i - firstIndex] = (row[col] == null || row[col] == DBNull.Value) ? 0 : (double)row[col]; } } return outArr; }

1 个答案:

答案 0 :(得分:1)

首先,使用0D设置一个double值,并避免将int隐式转换为double。您可以尝试使用ToDouble类型的Convert静态方法进行转换。样本:

double setValue = 0D;
if (row[col] != null && row[col] != DBNull.Value)))
   setValue = (row[col] is decimal) ? Convert.ToDouble(row[col]) : (double) row[col];

outArr[++r, i - firstIndex] = setValue;