Цель
Сортировка string
, который численно отображает данные о валюте, такие как $1,995.94
, в наборе данных.
код
В настоящее время я использую приведенный ниже пример кода, чтобы преобразовать значение string
в decimal
, чтобы я мог правильно сортировать его.
if (sortBy == "checkAmount")
{
StringBuilder sb = new StringBuilder();
foreach (var c in Convert.ToString(p.GetType().GetProperty(sortBy).GetValue(p, null)))
{
if (!char.IsDigit(c) && c != '.') { continue; }
sb.Append(c);
}
return Convert.ToDecimal(sb.ToString());
}
else
{
return p.GetType().GetProperty(sortBy).GetValue(p, null);
}
Проблема
Какой лучший способ сделать это? Он работает, и это круто, но это не очень элегантно.
Окончательное решение
Ответ, предоставленный Servy работает как ожидалось, и я использовал эту реализацию некоторое время, но коллега и я нашли еще лучший способ, поэтому я документирую его здесь. Кстати, в итоге я решил использовать это решение.
decimal.Parse(input, NumberStyles.AllowCurrencySymbol | NumberStyles.Number);