He encontrado una solución para este error, pero ahora tengo mucha curiosidad de por qué esto estaría sucediendo, me preguntaba si alguien más ha tenido este error.Analizando un decimal de un DataReader
Mi función es la siguiente:
public void Blog_GetRating(int blogID, ref decimal rating, ref int voteCount)
{
// Sql statements
// Sql commands
if (DataReader.Read())
{
// this line throws a 'Input string was not in a correct format.' error.
rating = decimal.Parse(DataReader["Rating"].ToString());
// this works absolutly fine?!
decimal _rating = 0;
decimal.TryParse(DataReader["Rating"].ToString(), out _rating);
rating = _rating;
}
}
Cualquiera que he visto eso antes?
Lo que es aún más extraño es que si escribo esto:
rating = decimal.Parse("4.0");
que funciona bien, el 4.0 es lo que está saliendo de mi DataReader.
Como dije anteriormente, el método TryParse funciona bien, así que no me detiene, pero ahora estoy realmente interesado en ver si alguien tiene una respuesta para ello.
¡Esperamos algunas respuestas!
Sean
EDITAR - RESOLVER
El método decimal.Parse estaba trabajando bien, la segunda vez que la función se ejecuta (estaba en un bucle), un puesto que no había sido calificado por lo que una valor nulo fue devuelto por el lector de datos. Envolver COALESCE en mi cálculo en SQL resolvió bien el problema. De ahí que, como dijiste, el método tryparse no lanzara una excepción, simplemente manteniendo el valor predeterminado de 0 en _rating.
¿Por qué la columna no es numérica, por lo que no es necesario analizar? –