using System.Collections.Generic;
public static class Program
public static void Main()
Console.WriteLine(StringComparison.CurrentCultureIgnoreCase.To_snake_case());
public static string To_snake_case<T>(this T value) where T : Enum
return SnakeCaseHelper<T>.Values.TryGetValue(value, out var name) ? name : null;
private static class SnakeCaseHelper<T> where T : Enum
public static Dictionary<T, string> Values = new();
var names = Enum.GetNames(typeof(T));
var values = (T[])Enum.GetValues(typeof(T));
for (var i = 0; i < values.Length; i++)
Values[values[i]] = GetSnakeCase(names[1]);
static string GetSnakeCase(string text)
var sb = new StringBuilder();
sb.Append(char.ToLowerInvariant(text[0]));
for(int i = 1; i < text.Length; ++i)
sb.Append(char.ToLowerInvariant(c));