"value must be a number less than infinity" 变量为整数时出错

"value must be a number less than infinity" error when the variable is a integer

我不确定是否应该问这个问题,但详细信息可能有助于找出答案:p 我有一个这样的table

我正在使用 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 行得到了 inifity 错误,但是只有当我在 5 到 15 之间时才会发生,如果我选择任何其他值,我可以让程序运行正确。

有什么提示吗?

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

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

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();

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

我建议您添加一个检查 DBNull.Value 并在它出现时将最小值设置为值