C# 如何将日期范围应用于策略
我正在进行此项目,以考虑到该表将具有以下内容 保单表ID开始日期结束日期账龄金额 如果最年轻的驾驶员在开始日期年龄在21到25岁之间 保险单的保险费增加20% 如果最年轻的驾驶员在保单生效日期年龄在26至75岁之间,则将保费降低10% 我相信我已经管理了最年轻的司机和年龄范围,但我不知道如何在政策开始日期实现创意 客户保单的默认值为500英镑C# 如何将日期范围应用于策略,c#,entity-framework,C#,Entity Framework,我正在进行此项目,以考虑到该表将具有以下内容 保单表ID开始日期结束日期账龄金额 如果最年轻的驾驶员在开始日期年龄在21到25岁之间 保险单的保险费增加20% 如果最年轻的驾驶员在保单生效日期年龄在26至75岁之间,则将保费降低10% 我相信我已经管理了最年轻的司机和年龄范围,但我不知道如何在政策开始日期实现创意 客户保单的默认值为500英镑 public void UpdatePolicyAgePremium(int policyid) { Decimal defaultAmo
public void UpdatePolicyAgePremium(int policyid)
{
Decimal defaultAmount = Convert.ToDecimal(500);
var drivergroups = appliedDB.tblDrivers
.Where(b => b.policy_Id == policyid && b.age > 21 && b.age < 75)
.GroupBy(drv => drv.age <= 25).ToList(); // or < 25 ?
var policy = appliedDB.tblPolicies
.Single(p => p.id == policyid);
foreach (var driverGroup in drivergroups)
{
var young = driverGroup.Key;
decimal multiplier = young ? 1.2m : 1.1m;
foreach (var driver in driverGroup.OrderBy(d => d.age))
{
policy.amount = defaultAmount * multiplier;
multiplier = 1m; // so only the first iteration is multiplied.
}
}
public void UpdatePolicyAgePremium(int-policyid)
{
十进制默认金额=转换为十进制(500);
var drivergroups=appliedDB.tblDrivers
其中(b=>b.policy_Id==policyid&b.age>21&b.age<75)
.GroupBy(drv=>drv.age p.id==policyid);
foreach(driverGroup中的var driverGroup)
{
var young=driverGroup.Key;
十进制乘数=1.2米:1.1米;
foreach(driverGroup.OrderBy中的var驱动程序(d=>d.age))
{
policy.amount=默认金额*乘数;
乘法器=1m;//因此只乘以第一次迭代。
}
}
}存储birtdate,只需计算开始日期的年龄,然后应用年龄规则。你可以这样计算年龄
//assuming start date is now, but //depends on your implementation
DateTime startDate = DateTime.Now ;
var age = today.Year - birthdate.Year;
然后您有了应用规则的年龄而不是年龄,存储生日(计算年龄),您可以将其与开始日期进行比较。大约startdate的年龄是startdate-Birthdate我该如何比较它@Danhunex你不需要比较。您在开始日期计算年龄。年龄=起始日期-出生日期,然后应用21到26或26到74的规则。计算时会考虑开始日期的外观,但仍然不清楚您想要什么。你为什么不按照我先前的建议来展示样本数据和结果呢?对不起,丹,我应该让本对年龄有更多的认识,就像我检查不同年龄组的方法一样,这不是我最初的问题,我该如何与保单的开始日期进行比较