"值必须是小于无穷大的数字"变量是整数时出错

时间:2015-03-06 09:52:00

标签: c# datatable

我不确定我是否应该问这个,但细节可能有助于找出:p 我有这样一张桌子

enter image description here

我正在使用compute来获取Variavel列中双变量所在的时间间隔

double value = 6;

 double max Convert.ToDouble(DataAccess.Instance.tabela1vert0caso1W.Compute("MIN(Variavel)", "Variavel >= " + value.ToString(CultureInfo.InvariantCulture)));
 double min = Convert.ToDouble(DataAccess.Instance.tabela1vert0caso1W.Compute("MAX(Variavel)", "Variavel <= " + value.ToString(CultureInfo.InvariantCulture)));

这里的问题是我在double min行上遇到了无效错误,但只有当我在5到15之间时才会发生,如果我选择任何其他值,我会让程序正常工作。

任何提示?

顺便说一句,我在行之前检查了value的值,它仍然是6。

2 个答案:

答案 0 :(得分:1)

我不确定实际问题是什么,但是,您总是可以使用功能更强大的Linq-To-DataTable(支持整个.NET框架)并且更具可读性:

var variavels =  DataAccess.Instance.tabela1vert0caso1W.AsEnumerable()
    .Select(row => row.Field<int>("Variavel"));
double max = variavels.Where(d => d >= value).Max();
double min = variavels.Where(d => d <= value).Min();

答案 1 :(得分:1)

计算方法可以返回DBNull.Value。似乎不清楚什么时候Max()函数会返回这个,但是你的select可能返回0行?

我建议您添加一个DBNull.Value检查,并在发生时将min设置为值