Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net SqlFunctions.StringConvert返回错误的结果_.net_Sql Server_Entity Framework - Fatal编程技术网

.net SqlFunctions.StringConvert返回错误的结果

.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

我正在使用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
试试这个

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()上