I am new with C# and I have some troubles with enum.
I have Enum defined like this:
public enum CustomFields
{
    [Display(Name = \"first_name\")]
          
        Try the following.
void Main()
{   
    CustomFields value1 = GetEnumValue("first_name");
    CustomFields value2 = GetEnumValue("last_name");
}
static Dictionary<string, CustomFields> displayNameMapping;
static CustomFields GetEnumValue(String displayName){
    if (displayNameMapping == null){
        var enumType = typeof(CustomFields);
        var displayAttributeType = typeof(DisplayAttribute);
        CustomFields? found = null;
        displayNameMapping = new Dictionary<string, CustomFields>();
        Enum.GetNames(enumType).ToList().ForEach(name=>{
            var member = enumType.GetMember(name).First();
            var displayAttrib = (DisplayAttribute)member.GetCustomAttributes(displayAttributeType, false).First();
            displayNameMapping.Add(displayAttrib.Name, (CustomFields)Enum.Parse(enumType, name));
        });
    }
    return displayNameMapping[displayName];
}
// Define other methods and classes here
public enum CustomFields
{
    [Display(Name = "first_name")]
    FirstName = 1,
    [Display(Name = "last_name")]
    LastName = 2,
}
You could use generics:
    public class Program
    {
        private static void Main(string[] args)
        {
            var name = "first_name";
            CustomFields customFields = EnumHelper<CustomFields>.GetValueFromName(name);
        }
    }
    public enum CustomFields
    {
        [Display(Name = "first_name")]
        FirstName = 1,
        [Display(Name = "last_name")]
        LastName = 2,
    }
    public static class EnumHelper<T>
    {
        public static T GetValueFromName(string name)
        {
            var type = typeof (T);
            if (!type.IsEnum) throw new InvalidOperationException();
            foreach (var field in type.GetFields())
            {
                var attribute = Attribute.GetCustomAttribute(field,
                    typeof (DisplayAttribute)) as DisplayAttribute;
                if (attribute != null)
                {
                    if (attribute.Name == name)
                    {
                        return (T) field.GetValue(null);
                    }
                }
                else
                {
                    if (field.Name == name)
                        return (T) field.GetValue(null);
                }
            }
            throw new ArgumentOutOfRangeException("name");
        }
    }