【发布时间】:2012-06-27 08:52:43
【问题描述】:
我正在尝试选择一个数据表对象。当我的表达式值为 82.5 (double) 时,代码抛出异常。
_dataSet.Tables[2].Select("ProfitShareRatio = " + Convert.ToDouble(_listrow[m]["ProfitShareRatio"]));
P.s : ProfitShareRatio 的值是 _dataSet.Tables[2] 的两倍
错误:
表达式中的语法错误。
在 System.Data.ExpressionParser.Parse() 在 System.Data.DataExpression..ctor(DataTable 表,字符串表达式,类型类型) 在 System.Data.Select..ctor(DataTable 表,字符串 filterExpression,字符串排序,DataViewRowState 记录状态) 在 System.Data.DataTable.Select(String filterExpression)
编辑 2: 当我使用 Decimal 时出现同样的错误。
_dataSet.Tables[2].Select("ProfitShareRatio = " + Convert.ToDecimal(_listrow[m]["ProfitShareRatio"]));
P.s 2:问题是Convert.ToDecimal(_listrow[m]["ProfitShareRatio"]) 是返回值,带有逗号,如 82,50
我需要用 82.50 之类的点返回值
【问题讨论】:
-
出于兴趣,_dataSet.Tables[2].Select("ProfitShareRatio = 82.5") 有效吗?您确定 _dataSet.Tables[2] 中的 ProfitShareRation 数据类型是 double 吗?那么 _dataSet.Tables[2].Columns["ProfitShareRation"].DataType 给你什么?
-
@maycil 你能给我们解释一下 _listrow[m]["ProfitShareRatio"] 吗?
-
@dash _dataSet.Tables[2].Select("ProfitShareRatio = 82.5") 正在工作。 _dataSet.Tables[2]["ProfitShareRatio"] 是十进制的。
-
@HichemC _listrow[m]["ProfitShareRatio"] 是一个比率值,可以是 1,0 到 100,00。
-
@maycil - 如果是十进制,那么为什么不使用 Convert.ToDecimal?