c# - C# 中基于距离的价格计算
问题描述
我必须根据距离和公里数来计算价格。有人可以帮助我实现目标。我的数组如下:
List<PriceStructure> priceStructure = new List<PriceStructure>()
{
new PriceStructure { FromKm = 1, ToKm = 10, Price = 90, IsMinimum = true, IsContact = false },
new PriceStructure { FromKm = 11, ToKm = 20, Price = 7, IsMinimum = false, IsContact = false },
new PriceStructure { FromKm = 21, ToKm = 30, Price = 6, IsMinimum = false, IsContact = false },
new PriceStructure { FromKm = 31, ToKm = 40, Price = 5, IsMinimum = false, IsContact = false },
new PriceStructure { FromKm = 41, ToKm = 50, Price = 4, IsMinimum = false, IsContact = false },
new PriceStructure { FromKm = 51, ToKm = 60, Price = 3, IsMinimum = false, IsContact = false },
new PriceStructure { FromKm = 61, ToKm = 70, Price = 2, IsMinimum = false, IsContact = false },
new PriceStructure { FromKm = 71, ToKm = 300, Price = 1.50M, IsMinimum = false, IsContact = false },
new PriceStructure { FromKm = 301, ToKm = 0, Price = 0, IsMinimum = false, IsContact = true }
};
如果距离在 1 到 10 公里之间,最低价格为 90。如果距离超过 10,则每公里将根据每行的数组中定义的价格按每公里计算(从第 11 公里开始)。
例如:
- 如果距离为 8 公里,则价格为 90
- 如果距离为 15 公里,则价格为 90 + (5x7) = 90 + 35 = 125
- 如果距离为 39 公里,则价格为 90 + (29x5) = 90 + 145 = 235
- 如果距离为 63 公里,则价格为 90 + (53*2) = 90 + 106 = 196
- 如果距离超过 300 公里,则函数应返回报价。
解决方案
您可以创建一个函数来反映您已经完成的计算,例如:
int CalculatePrice(PriceStructure ps) {
int distance = ps.ToKm - ps.FromKm;
if(distance < 10) {
return 90;
}
int price = 90 + ((distance - 10) * ps.Price);
return price;
}
然后,您可以迭代priceStructure
并使用列表中的每个项目调用该函数。
为了改进代码,您也许可以将最小距离视为一个常数或至少一个变量。我还建议将Price
PriceStructure 中的属性重命名为更能代表实际价值的东西,听起来像PricePerKm
推荐阅读
- php - Laravel 从表中获取记录
- sql - SQL 除法两个 SUM() 函数
- acumatica - 文件上传时出错:特定密钥不存在
- c - C strtok解析复杂字符串
- powerbi-embedded - Power BI 报表服务器是否支持 Power BI Javascript API?
- php - Laravel 无法创建 Eloquent 模型
- cumulocity - 在 HTML 小部件中访问 lastMeasurement
- c# - Dapper where 子句 IN 数组,不存在从对象类型 System.Collections.Generic.List`1 到已知托管提供程序本机类型的映射
- macos - 在 Mac 中找不到 phmymyadmin.config.php
- arrays - 将数据 c# 从字符串格式 yyyymmdd 转换为 ddmmyy