decimal GetTaxes(decimal salary)
{
var rates = new[]
{
new { Threshold = 40230.0m, Rate = 0.45m },
new { Threshold = 21240.0m, Rate = 0.33m },
new { Threshold = 14070.0m, Rate = 0.3m },
new { Threshold = 8660.0m, Rate = 0.23m },
new { Threshold = 5070.0m, Rate = 0.14m },
new { Threshold = 0.0m, Rate = 0.1m },
};
decimal tax = 0;
foreach (var r in rates)
{
decimal slice = salary - r.Threshold;
if (slice <= 0)
continue;
tax += r.Rate * slice;
salary -= slice;
}
return tax;
}