【发布时间】:2020-12-20 22:17:35
【问题描述】:
这是我的问题的示例数据,
List<EMPINSURED> lstEmpIns = new List<EMPINSURED>{
new EMPINSURED{ EmpID = 558, TOTAL_INSURED_AMT = 50000},
new EMPINSURED{ EmpID = 559, TOTAL_INSURED_AMT = 75000}
};
List<EMP_ROUTINE_CHECKUP_HISTORY> lstEmpRoutineChkHist = new List<EMP_ROUTINE_CHECKUP_HISTORY>{
new EMP_ROUTINE_CHECKUP_HISTORY{ ID = 1, EmpID = 558, ROUTINE_CHECKUP = 1, CHECK_UP_CHARGE = 20000},
new EMP_ROUTINE_CHECKUP_HISTORY{ ID = 2, EmpID = 559, ROUTINE_CHECKUP = 1, CHECK_UP_CHARGE = 35000},
new EMP_ROUTINE_CHECKUP_HISTORY{ ID = 3, EmpID = 558, ROUTINE_CHECKUP = 2, CHECK_UP_CHARGE = 10000},
new EMP_ROUTINE_CHECKUP_HISTORY{ ID = 4, EmpID = 559, ROUTINE_CHECKUP = 2, CHECK_UP_CHARGE = 10000},
new EMP_ROUTINE_CHECKUP_HISTORY{ ID = 5, EmpID = 558, ROUTINE_CHECKUP = 3, CHECK_UP_CHARGE = 20000}
};
一年内,一名员工只能接受 3 次例行检查。员工进行例行检查时,其检查费用必须从总保险金额中扣除。下一次例行检查,仅按保额总保额中剩余的部分发给员工检查费,超过此部分的费用,公司概不承担。
所以计算REMAINING AMOUNT的逻辑有点像这样::
int var = 0;
if(ROUTINE_CHECKUP == 1)
{
REMAINING_AMOUNT = TOTAL_INSURED_AMT - CHECK_UP_CHARGE;
var = CHECK_UP_CHARGE;
}
else if (ROUTINE_CHECKUP == 2)
{
REMAINING_AMOUNT = TOTAL_INSURED_AMT - (CHECK_UP_CHARGE + var);
var = CHECK_UP_CHARGE + var;
}
else if (ROUTINE_CHECKUP == 3)
{
REMAINING_AMOUNT = TOTAL_INSURED_AMT - (CHECK_UP_CHARGE + var);
var = CHECK_UP_CHARGE + var;
}
如何使用此逻辑开发 LINQ 查询以获取以下报告数据,或者可能有更好的方法来执行此操作。 报告格式见附图。
【问题讨论】:
-
尚未进行体检的员工怎么办?您是否希望它们也在列表中,
RoutineChekup = 0, CheckupCharge=0, RemainingAmount = TotalInsuredAmount? -
是的,我也必须给他们看。
标签: c# asp.net asp.net-mvc linq asp.net-mvc-5