我有一個PTO對象列表,它有兩個屬性AllowedHours和TakenHours。 我需要從應計銀行減去PTO,直到它們達到0,然後移動到下一個銀行。如何有效地從一個數字列表直到0
此代碼有效,但它看起來有辦法更有效地做到這一點?也許只有通過linq才能做到這一點?
var requestedHours = requestDetail.Hours;
while (requestedHours > 0)
{
var accrualBank = employeeAccruals.First(e => (e.AllowedHours - e.TakenHours) > 0);
var hoursAvailable = accrualBank.AllowedHours - accrualBank.TakenHours;
if (hoursAvailable > requestedHours)
{
accrualBank.TakenHours += requestedHours;
requestedHours = 0;
}
else
{
accrualBank.TakenHours = accrualBank.AllowedHours;
requestedHours -= hoursAvailable;
}
}
這將是很好,如果你能解釋一下你所說的「更有效地」的意思。你的意思是更快的代碼執行,更少的代碼行數,更低的功耗或者我忘記的其他東西?根據你的意思是「效率」,你會(可能)得到一些答案。 :-) –
什麼是'employeeAccruals' - '列表'? –
employeeAccruals是PTO accurals列表 –