Хотя decimal.Parse () - это метод, который вы ищете, вам придется предоставить ему немного больше информации.Он не будет автоматически выбирать между 3 форматами, которые вы предоставляете, вам нужно будет указать, какой формат вы ожидаете (в форме IFormatProvider).Обратите внимание, что даже с IFormatProvider, я не думаю, что «50085» будет правильно введен.
Единственное, что я вижу в том, что из ваших примеров видно, что вы всегда ожидаете два десятичных знака точности.Если это так, вы можете удалить все точки и запятые, а затем разделить на 100.
Может быть что-то вроде:
public decimal? CustomParse(string incomingValue)
{
decimal val;
if (!decimal.TryParse(incomingValue.Replace(",", "").Replace(".", ""), NumberStyles.Number, CultureInfo.InvariantCulture, out val))
return null;
return val / 100;
}