Ho il seguente enumeratore i cui valori sono ripresi in un campo di un database

codice:
    public enum SwitchField
    {
        UNDEFINED,
        EF,
        HIDE,
        GENERIC,
        SELECT,
        OPTION,
        REQUEST,
        TEXTAREA,
        CURRENCY,
        INTEGER,
        PROG
    }
Quando vado a leggere i valori dal database ottengo una stringa che non riesco a convertire in un valore dell'enumeratore; ho quindi creato il seguente ciclo per convertire la stringa nell'enumeratore:

codice:
    string strSwitchField = valoreOttenutoDalDatabase;
    SwitchField switchField;

    foreach (int sf in Enum.GetValues(typeof(SwitchField)))
    {
        if (strSwitchField == Enum.GetName(typeof(SwitchField),sf))
        {
            switchField = (SwitchField)Enum.ToObject(typeof(SwitchField),sf);
        }
    }
Il codice sembra funzionare correttamente, l'unica anomalia è che, nel caso in cui la variabile 'strSwitchField' è uguale a una stringa vuota, la variabile switchField assume il primo valore dell'enumeratore.

Secondo voi il procedimento è corretto oppure ci sono altri sistemi più efficienti per raggiungere lo stesso risultato?