У меня есть общий список сотрудников, я хочу удалить их из списка после достижения определенного условия.Как удалить объект из списка после достижения условия
В настоящее время мне удалось получить близкую форму работы, но если в списке есть более одного объекта, он дублируется после запуска методов.
- Каждый сотрудник имеет
shifts left
переменную, если это заканчивается они транспортируются обратно вfree
список
private void btnCycle_Click(object sender, EventArgs e)
{
foreach (Employee emp in employees)
{
if (emp.Busy == true)
{
emp.ShiftsLeft--;
if (emp.ShiftsLeft == 0)
{
lstOccupied.Items.Clear();
emp.Busy = false;
DisplayData(employees);
}
}
}
}
private void DisplayData(List<Employee> employees)
{
foreach (Employee emp in employees)
{
if (emp.Busy == false)
lstFree.Items.Add(emp);
else if (emp.Busy == true)
lstOccupied.Items.Add(emp);
}
}
Это объекты в использовать в ми Нут
Employee e1 = new Employee(MemberJob.Employee, "Name", MemberSkills.CPlus, true,
"Do this Job", 5);
Employee e2 = new Employee(MemberJob.Employee, "Another name", MemberSkills.CSharp, true,
"Do another Job", 2);
Результат
Что в настоящее время происходит с кодом, который я предусмотрел, что после Another name
завершения их сдвига (2 смены), они транспортируются обратно в free
ListBox, и они исчезают из списка occupied
, который я хотел, после того, как Name
закончен, они снова помещаются в free
, но another name
отображается дважды.
Возможное решение
я мог бы его так, что если имя отображается больше, чем когда-то на free
он получает удаляется и отображается только один раз, но это грязно, и я могу себе представить, если работник имеет то же имя, что и другое, приведет к конфликтам.
Правильный способ сказать 'if (emp.Busy == false) lstFree.Items.Add (emp); else if (emp.Busy == true) lstOccupied.Items.Add (emp); 'is' if (emp.Busy) lstOccupied.Items.Add (emp); else lstFree.Items.Add (emp); ' –
@ OlivierJacot-Descombes Да, я даже не заметил, что, пока вы не указали на это, я бы попробовал бы мой код в конце программы, но спасибо, что указал на это и сохраняя его единообразным стандартом :) –