這比邏輯問題更多的是邏輯問題。基於其他變量列表更新變量
class Step {
public string StepStatus {get ; set;}
public List<Task> Tasks {get ; set;}
public Step() {
Tasks= new List<Task>() ;
}
//on some event I call this method that updates StepStatus based on status of
//all task statuses
private void UpdateStepStatusFromTasks() {
foreach (Task t in Tasks) {
// t.TaskStatus
// set StepStatus here
// LOGIC here
}
}
}
每個任務對象t都有自己的TaskStatus字符串。
如果所有的任務狀態是 「DONE」,以 「完成」 設置步驟狀態
如果所有的任務狀態是 「TODO」,設置步驟狀態爲 「TODO」
如果任務狀態之一是「做」,設置步驟狀態到「做」
如果任務狀態之一是「DONE」,一個是「TODO」,設置步驟狀態到「做」
實現此目的的最佳方法是什麼?在代碼複雜性和較少靈活性方面。
我如何解決它:
private void UpdateStepStatusFromTasks()
{
if (Tasks.All(t => t.TaskStatus.Equals("Not Started")))
StepStatus = "Not Started";
else if (Tasks.All(t => t.TaskStatus.Equals("Completed")))
StepStatus = "Completed";
else
StepStatus = "In Progress";
}
使用'All'和'Any' LINQ擴展方法? – Blorgbeard
你能舉一個例子嗎?聽起來很有趣 。我對linq不太熟悉。 –
@dominik發佈了一個顯示如何使用'All'的答案。我用一個稍微不同的方法發佈了一個答案。 – Blorgbeard