Какая часть этого нелегка?
Полагаю, вы могли бы вместо этого иметь класс для каждого перечисления, наследовать от общего интерфейса SearchType и реализовать функцию с именем ProcessList - не уверен, какой список предлагает лучшую функцию.
Что-то вроде ..
interface SearchType
{
object ProcessList(object list, string text);
}
class Contains : SearchType
{
object ProcessList(object list, string text)
{
list = list.Where(a => a.Reference.Contains(text, StringComparison.CurrentCultureIgnoreCase));
}
}
Нужно сделать класс для каждого типа перечисления.
Тогда вам нужно установить переменную SearchType следующим образом ...
SearchType searchType = new Contains();//or something else
и ваш коммутатор может быть заменен этим ...
list = searchType.ProcessList(list, "test");
... Не совсем проще с точки зрения кодирования, но вместо переключателя вы получите более читаемый код.