Мой первый вопрос - есть ли у вас доступ к самой базе данных? Это должно быть нормализовано в базе данных, в идеале, в противном случае любое решение будет подвержено ошибкам. По моему опыту, поля данных, заполненные "OEM" и "CMB", имеют тенденцию к тому, что со временем будут смешиваться такие вещи, как "oem" и другие "данные дерьма". в таблице, содержащей элементы, такие как Enum, и все готово, с гораздо более чистой структурой.
Если этого нет, я бы сделал ваш Enum и создал бы класс, чтобы разобрать вашу строку в Enum для вас. Это, по крайней мере, даст вам некоторую гибкость в обработке нестандартных записей и гораздо большую гибкость для перехвата или обработки ошибок, чем любое из обходных путей с использованием Enum.Parse / Reflection / и т.д. Словарь будет работать, но может сломаться, если у вас возникнут проблемы с регистром и т. Д.
Я бы порекомендовал написать класс, чтобы вы могли сделать:
// I renamed this to GroupType, since it sounds like each element has a single type...
GroupType theType = GroupTypeParser.GetGroupType(theDBString);
Это сохраняет большую часть вашей читабельности без необходимости изменения БД.