Существует хотя бы одно значение, которое нельзя преобразовать в десятичное число. Вы можете попробовать обходной путь, например:
protected override void OnAppearing()
{
base.OnAppearing();
using (SQLiteConnection conn = new SQLiteConnection(App.FilePath))
{
conn.CreateTable<MainWindowViewModel>();
var APRS = conn.Table<MainWindowViewModel>()
.ToList()
.OrderBy(APR => decimal.TryParse(APR.Monthly, out decimal m)?m:0);
APRListView.ItemsSource = APRS;
}
}
РЕДАКТИРОВАТЬ: Вы можете добавить параметры к этому TryParse, чтобы проанализировать для определенной культуры c, а также включить символы для валюты и c.
РЕДАКТИРОВАТЬ: я вижу, что у вас есть £ в ваших значениях, вероятно, обозначает валюты в Великобритании:
protected override void OnAppearing()
{
base.OnAppearing();
using (SQLiteConnection conn = new SQLiteConnection(App.FilePath))
{
conn.CreateTable<MainWindowViewModel>();
var APRS = conn.Table<MainWindowViewModel>()
.ToList()
.OrderBy(APR => decimal.TryParse(APR.Monthly, System.Globalization.NumberStyles.Currency, new CultureInfo("en-GB"), out decimal m)?m:0);
APRListView.ItemsSource = APRS;
}
}