C# 当datatable.Compute(字符串)出现不详细的错误时,如何正确地编写它?

C# 当datatable.Compute(字符串)出现不详细的错误时,如何正确地编写它?,c#,datatable,C#,Datatable,我正在创建一个双精度数据表,如下所示 我正在使用另一个依赖于用户输入的double来修复自身,上面两行,下面两行 double razao = Variables.dadocobplanaW / Variables.alturaW; double min = Convert.ToDouble(DataAccess.Instance.tabelaplanaplatibandaW.Compute("MIN(Variavel)", "Variavel > " + razao.ToStrin

我正在创建一个双精度数据表,如下所示

我正在使用另一个依赖于用户输入的double来修复自身,上面两行,下面两行

double razao = Variables.dadocobplanaW / Variables.alturaW;

 double min = Convert.ToDouble(DataAccess.Instance.tabelaplanaplatibandaW.Compute("MIN(Variavel)", "Variavel > " + razao.ToString()));
 double max = Convert.ToDouble(DataAccess.Instance.tabelaplanaplatibandaW.Compute("MAX(Variavel)", "Variavel < " + razao.ToString()));


 DataRow[] rows = DataAccess.Instance.tabelaplanaamansardadaW.Select("Variavel = " + min.ToString() + " OR " + "Variavel = " + max.ToString());
double-razao=Variables.dadocobplanaW/Variables.alturaW;
double min=Convert.ToDouble(DataAccess.Instance.tabelaplanaplatibandaW.Compute(“min(Variavel)”,“Variavel>”+razao.ToString());
double max=Convert.ToDouble(DataAccess.Instance.tabelaplanaplatibandaW.Compute(“max(Variavel)”,“Variavel<”+razao.ToString());
DataRow[]rows=DataAccess.Instance.TabelaPlanaaManSardaw.Select(“Variavel=“+min.ToString()+”或“+”Variavel=“+max.ToString()”);
我已经重新验证了表及其名称,一切正常,代码运行,但当我在
razao
中获得一个值时,程序将在尝试查找
min
max
时崩溃

是不是因为我在每种情况下都有两行具有相同的
Variavel

有什么提示吗

编辑:下面是错误消息


问题可能是由于
razao.ToString()、min.ToString()、max.ToString()的格式不正确造成的。
;检查这些字符串中的分隔符。应该是
,我想。

如果有逗号
,”
;尝试此
razao.ToString(CultureInfo.InvariantCulture)

此问题可能是由
razao.ToString()、min.ToString()、max.ToString()的格式不正确引起的。
;检查这些字符串中的分隔符。应该是
,我想。

如果有逗号
,”
;尝试此
razao.ToString(CultureInfo.InvariantCulture)

此问题可能是由
razao.ToString()、min.ToString()、max.ToString()的格式不正确引起的。
;检查这些字符串中的分隔符。应该是
,我想。

如果有逗号
,”
;尝试此
razao.ToString(CultureInfo.InvariantCulture)

此问题可能是由
razao.ToString()、min.ToString()、max.ToString()的格式不正确引起的。
;检查这些字符串中的分隔符。应该是
,我想。

如果有逗号
,”
;试试这个
razao.ToString(CultureInfo.InvariantCulture)

我认为您的问题在于解析
compute()
方法使用的表达式

您可以使用下面的代码来验证它,而且似乎不需要双倍

String min = DataAccess.Instance.tabelaplanaplatibandaW.Compute("MIN(Variavel)", String.Format(@"Variavel > {0}", razao.ToString())).ToString();
之后,您需要找到
compute()
方法的隐藏代码。 该方法使用表达式解析器,该解析器可能从表中读取数据并将其解析到
System.data
的节点

问题出在过滤器部分,当
Variavel
razao
解析到System.Double时

在上面的链接中说:

例如,如果文本中的数字为2147483650,则DataSet将 第一次尝试将数字解析为Int32。这不会成功 因为这个数字太大了。在这种情况下,DataSet将解析 编号为Int64,这将成功。如果文字是一个数字 大于Int64的最大值,DataSet将解析 使用Double的文本。 使用科学记数法的真实文字,如4.42372E-30 使用System.Double解析

无论如何,你可以改变你的方式,从DB中取最小值和最大值。
我想你的问题在于解析
compute()
方法使用的表达式

您可以使用下面的代码来验证它,而且似乎不需要双倍

String min = DataAccess.Instance.tabelaplanaplatibandaW.Compute("MIN(Variavel)", String.Format(@"Variavel > {0}", razao.ToString())).ToString();
之后,您需要找到
compute()
方法的隐藏代码。 该方法使用表达式解析器,该解析器可能从表中读取数据并将其解析到
System.data
的节点

问题出在过滤器部分,当
Variavel
razao
解析到System.Double时

在上面的链接中说:

例如,如果文本中的数字为2147483650,则DataSet将 第一次尝试将数字解析为Int32。这不会成功 因为这个数字太大了。在这种情况下,DataSet将解析 编号为Int64,这将成功。如果文字是一个数字 大于Int64的最大值,DataSet将解析 使用Double的文本。 使用科学记数法的真实文字,如4.42372E-30 使用System.Double解析

无论如何,你可以改变你的方式,从DB中取最小值和最大值。
我想你的问题在于解析
compute()
方法使用的表达式

您可以使用下面的代码来验证它,而且似乎不需要双倍

String min = DataAccess.Instance.tabelaplanaplatibandaW.Compute("MIN(Variavel)", String.Format(@"Variavel > {0}", razao.ToString())).ToString();
之后,您需要找到
compute()
方法的隐藏代码。 该方法使用表达式解析器,该解析器可能从表中读取数据并将其解析到
System.data
的节点

问题出在过滤器部分,当
Variavel
razao
解析到System.Double时

在上面的链接中说:

例如,如果文本中的数字为2147483650,则DataSet将 第一次尝试将数字解析为Int32。这不会成功 因为这个数字太大了。在这种情况下,DataSet将解析 编号为Int64,这将成功。如果文字是一个数字 大于Int64的最大值,DataSet将解析 使用Double的文本。 使用科学记数法的真实文字,如4.42372E-30 使用System.Double解析

无论如何,你可以改变你的方式,从DB中取最小值和最大值。
我想你的问题在于解析
compute()
方法使用的表达式

您可以使用下面的代码来验证它,而且似乎不需要双倍

String min = DataAccess.Instance.tabelaplanaplatibandaW.Compute("MIN(Variavel)", String.Format(@"Variavel > {0}", razao.ToString())).ToString();
之后,您需要找到
compute()
方法的隐藏代码。 该方法使用表达式