Para su requisito es tan simple como la gente ya lo señaló. Simplemente envía el objeto enum a int y obtendrías el valor numérico de la enumeración.
int value = (int) TestEnum.TestOne;
Sin embargo, si es necesario mezclar los valores de enum con | (OR bit a bit) p.
var value = TestEnum.TestOne | TestEnum.TestTwo;
y desea obtener lo que las opciones que mezclaba abajo valor representa, aquí es cómo usted podría hacerlo (nota: esto es para las enumeraciones que representados por valores int destinados para aprovechar operatations bit a bit):
primero, obtenga las opciones de enumeración junto con sus valores en un diccionario.
var all_options_dic = typeof(TestEnum).GetEnumValues().Cast<object>().ToDictionary(k=>k.ToString(), v=>(int) v);
Filtra el diccionario para devolver solo las opciones mixtas.
var filtered = all_options_dic.Where(x => (x.Value & (int) options) != 0).ToDictionary(k=>k.Key, v=>v.Value);
hagan cualquier lógica con sus opciones. p.ej. imprimiéndolos, convirtiéndolos en List, etc.:
foreach (var key in filtered.Keys)
{
Console.WriteLine(key + " = " + filtered[key]);
}
Espero que esto ayude.
A sus comentarios: En un contexto donde en cualquier sentido 'tiene' el valor 'TestEnum.TestOne', * ya tiene * el valor' 3'. ¿Qué es lo que realmente tienes? – AakashM