public static Dictionary <int, RateList> CreateDictionary() { var Rate = new RateList(); var Dictionary = new Dictionary <int, RateList>(); Dictionary.Add(0, new RateList { StartRange = 0, EndRange = 540000, rate = 0.05m, }); Dictionary.Add(1, new RateList { StartRange = 540000, EndRange = 1210000, rate = 0.12m }); Dictionary.Add(2, new RateList { StartRange = 1210000, EndRange = 2420000, rate = 0.2m }); Dictionary.Add(3, new RateList { StartRange = 2420000, EndRange = 4530000, rate = 0.3m }); Dictionary.Add(4, new RateList { StartRange = 4530000, EndRange = 10310000, rate = 0.4m }); Dictionary.Add(5, new RateList { StartRange = 10310000, EndRange = 2147483647, rate = 0.5m }); return(Dictionary); }
public static decimal CaculateRate(decimal money) { var list = RateList.CreateDictionary(); var tmp = list.Where(x => x.Value.StartRange < money); int key = -1; foreach (var i in tmp) { key++; } decimal sum = 0; if (key != 0) { for (var i = key; i > 0; i--) { sum += (list[i - 1].EndRange - list[i - 1].StartRange) * list[i - 1].rate; } } sum += (money - list[key].StartRange) * list[key].rate; return(sum); }