.net SqlFunctions.StringConvert返回错误的结果
我正在使用SQLServer2008 R2,需要搜索十进制数据字段.net SqlFunctions.StringConvert返回错误的结果,.net,sql-server,entity-framework,.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) && SqlF
我有像
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
试试这个
whereClause = t => (#some_condition1) &&
(#some_condition2) &&
SqlFunctions.StringConvert((int)t.Amount).Contains(Convert.ToInt32(searchfields))
从中尝试
SqlFunctions.StringConvert()
system.data.entity.sqlserver
namespace.Contains函数未重载为整数或十进制。searchfields=“68.88,65.55”旁边的平均值,use searchfields=“68,65”searchfields=“68”不起作用,这是必需的,用户将搜索一些数字,我需要显示它是否匹配,甚至在子字符串中。你说不工作是什么意思?你们能具体说明你们得到的输出吗?啊..明白了,你们会惊讶地发现问题出在正在进行舍入的SqlFunctions.StringConvert()上