Самое простое решение - просто изменить порядок проверки строки.
Вместо:
if(DateTime.TryParse(objString, out DateTime result))
{
// ...
}
else if (long.TryParse(objString, out long result))
{
// ...
}
else
{
// ...
}
Просто измените порядок вашего if
операторы:
if (long.TryParse(objString, out long result))
{
// ...
}
else if (DateTime.TryParse(objString, out DateTime result))
{
// ...
}
else
{
// ...
}
Как я уже говорил в моем комментарии, вы должны использовать double.TryParse
, если вы хотите вычислять числа с плавающей запятой
Так что, возможно, используйте это вместо:
if (double.TryParse(objString, out double dblResult))
{
// ...
}
else if (DateTime.TryParse(objString, out DateTime dateTimeResult))
{
// ...
}
else
{
// ...
}