SqlFunctions.StringConvert返回错误的结果

时间:2015-05-22 05:00:00

标签: .net sql-server entity-framework

我正在使用SQLServer2008 R2,需要搜索十进制数据字段
我有像

这样的行
ID | Amount 
1     68.88 
2     65.55

其中金额为十进制类型(18,2)

现在我正在使用EntityFramework6.0并进行类似为

的查询
whereClause = t => (#some_condition1) &&
                   (#some_condition2) &&
                   SqlFunctions.StringConvert((decimal)t.Amount).Contains(searchfields)

其中searchfields是一个字符串数据类型,并且包含" 68"期望是它应该获得ID为1的行(子串搜索)

现在有趣的是,如果我搜索68.88它正在搜索但不是68。

编辑

罪魁祸首是 SqlFunctions.StringConvert 对于sql server它正在进行舍入,所以转换为

SqlFunctions.StringConvert(68.88) will get converted to 69

现在的问题是如何避免这种四舍五入。

更新 使用Floor函数获取数字而不关心小数

SqlFunctions.StringConvert(decimal.Floor(68.88)) will get converted to 68

2 个答案:

答案 0 :(得分:1)

尝试SqlFunctions.StringConvert() system.data.entity.sqlserver名称空间。

答案 1 :(得分:0)

试试这个

ToolTipManager