Рефакторинг кода для повышения производительности
У меня есть список всех отделов, которые извлекаются из базы данных Теперь я хочу получить все подходящие отделы из списка отделов на основе некоторых критериев
Нижеэто код, который будет зацикливаться для каждого отдела, а случай переключения используется для проверки соответствия критериям, а затем добавить этот отдел в список подходящих отделов
List<EligibleDepartments> eligibleDepartments = new List<EligibleDepartments>();
//use the following boolean values for eliminating common logic execution again and again
bool IsCriteriaForABCDMatchSet = false;
bool IsCriteriaForEFMatchSet = false;
foreach (var department in departmentTypes) // here departmentTypes is the list of departments fetched from database
{
switch (department.DepartmentTypeId)
{
// here DepartmentTypes is the enum
case (int)DepartmentTypes.DepartmentA:
case (int)DepartmentTypes.DepartmentB:
case (int)DepartmentTypes.DepartmentC:
case (int)DepartmentTypes.DepartmentD:
if (IsCriteriaForABCDMatchSet || IsCriteriaForABCDMatches(students))
{
eligibleDepartments.Add(department);
IsCriteriaForABCDMatchSet = true;
}
break;
case (int)DepartmentTypes.DepartmentE:
case (int)DepartmentTypes.DepartmentF:
if (IsCriteriaForEFMatchesSet || IsCriteriaForEFMatches(students))
{
eligibleDepartments.Add(department);
IsCriteriaForEFMatchSet = true;
}
break;
case (int)DepartmentTypes.DepartmentG:
if (IsCriteriaForGMatches(students))
{
eligibleDepartments.Add(department);
}
break;
case (int)DepartmentTypes.DepartmentH:
if (IsCriteriaForIMatches(students))
{
eligibleDepartments.Add(department);
}
break;
case (int)DepartmentTypes.DepartmentI:
if (IsCriteriaForIMatches(students))
{
eligibleDepartments.Add(department);
}
break;
case (int)DepartmentTypes.DepartmentJ:
if (IsCriteriaForJMatches(students))
{
eligibleDepartments.Add(department);
}
break;
case (int)DepartmentTypes.DepartmentK:
if (IsCriteriaForKMatches(students))
{
eligibleDepartments.Add(department);
}
break;
}
}
Но почему-то я чувствую, что этот код замедлит работу.Есть ли альтернативный способ рефакторинга этого кода и избежать использования регистра переключателя здесь.Любая помощь будет оценена.