Вероятно, это форматирование totalprice
с запятой, например 3,14
, где SQL Server ожидает точку, например 3.14
.
Один из способов исправить это - указать InvariantCulture, который используетточка:
var s = string.Format(
CultureInfo.InvariantCulture,
"SELECT * from orders where OrderUserId = {0} and OrderTotalPrice = {0:0.0}",
42, 3.1415);
Форматирует цену как 3.1
на любом компьютере.
Кстати, гораздо лучше передавать переменные в качестве параметров:
var com = new SqlCommand();
com.CommandType = CommandType.Text;
com.CommandText = "SELECT * from orders where OrderUserId = @userid " +
"and OrderTotalPrice = @totalprice";
com.Parameters.AddWithValue("@userid", 42);
com.Parameters.AddWithValue("@totalprice", 3.1415);
var temporderid = com.ExecuteScalar();
Тогда вам не нужно беспокоиться о форматах, поскольку вы отправляете в базу данных двойное число, а не двойное, отформатированное в виде строки.