我正在研究这个proecdure,以便表格将具有以下内容
政策表格ID开始日期结束日期年龄金额
如果最年轻的司机在开始日期年龄介于21至25岁之间 该政策将保费增加20%
如果最年轻的司机在保单开始日期年龄介乎26至75岁,则保费减少10%
我相信我已经管理了最大的驱动程序和年龄范围,但我不知道如何在政策开始日期对其进行修饰。
客户政策的默认值为500英镑
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.
}
}
}
答案 0 :(得分:0)
存储birtdate,只计算开始日期的人的年龄,然后应用年龄规则。您可以计算年龄
//assuming start date is now, but //depends on your implementation
DateTime startDate = DateTime.Now ;
var age = today.Year - birthdate.Year;
然后您有应用规则的年龄