Я использую SQLServer2008 R2 и нужно искать на поле десятичных данных
У меня есть строки, как
SqlFunctions.StringConvert возвращаются неправильные результаты
ID | Amount
1 68.88
2 65.55
Где сумма имеет тип DECIMAL (18, 2)
Теперь я использую EntityFramework6.0 и сделать запрос как
whereClause = t => (#some_condition1) &&
(#some_condition2) &&
SqlFunctions.StringConvert((decimal)t.Amount).Contains(searchfields)
Где searchfields это строка типа данных и будет содержать «68» ожидание должно получить грести с ID 1 (подстрока поиска)
Теперь интересно это, если я поиск 68.88 она ищет, но не 68.
EDIT
преступник был SqlFunctions.StringConvert для SQL сервера это округление то время как преобразование так
SqlFunctions.StringConvert(68.88) will get converted to 69
Теперь вопрос заключается в том, как избежать этого округления.
функция UPDATE Используйте пол, чтобы получить число, не заботясь о десятичных знаков
SqlFunctions.StringConvert(decimal.Floor(68.88)) will get converted to 68
Содержит функцию, не перегруженную, чтобы принимать целочисленные или десятичные числа. –
, тогда сначала загрузите поисковые поля с целыми значениями. –
означает, что у searchfields = "68.88,65.55", используйте searchfields = "68,65" –