Сумма LINQ, имеющая условие if
Вот примерные данные для моей проблемы,
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(три) плановых осмотра. Когда работник проходит плановую проверку, его расходы на проверку должны быть вычтены из общей страховой суммы после каждой проверки. При следующем плановом осмотре сотруднику будут начислены расходы на проверку только на оставшуюся у него сумму от общей страховой суммы, любые расходы, превышающие эту сумму, компания нести не будет.
Так что логика расчета оставшейся суммы будет примерно такой ::
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, чтобы получить приведенные ниже данные отчета, используя эту логику, или может быть какой-то лучший способ сделать это.
Пожалуйста, смотрите ссылку на изображение для формата отчета.
запрос — ImgBB[^]
Что я уже пробовал:
Я понятия не имею, как это сделать. Пожалуйста, помогите мне с этой проблемой.