我不确定我是否应该问这个,但细节可能有助于找出:p 我有这样一张桌子
我正在使用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。
答案 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设置为值