2015-05-22 5 views
1

Я использую 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 

ответ

0

попробовать это

whereClause = t => (#some_condition1) && 
        (#some_condition2) && 
        SqlFunctions.StringConvert((int)t.Amount).Contains(Convert.ToInt32(searchfields)) 
+0

Содержит функцию, не перегруженную, чтобы принимать целочисленные или десятичные числа. –

+0

, тогда сначала загрузите поисковые поля с целыми значениями. –

+0

означает, что у searchfields = "68.88,65.55", используйте searchfields = "68,65" –

1

попробовать SqlFunctions.StringConvert() из system.data.entity.sqlserver имен.

Смежные вопросы