public static MultiSelectList ToMultiSelectList <TEnum>(this TEnum enumObj, int[] values, string placeholder = "") where TEnum : struct, IComparable, IFormattable, IConvertible { var destino_list = enumObj.ToDictionary(); if (!string.IsNullOrEmpty(placeholder)) { destino_list.Add(-1, placeholder); } destino_list = destino_list.OrderBy(item => item.Key).ToDictionary((keyItem) => keyItem.Key, (valueItem) => valueItem.Value); var select_list = new MultiSelectList(destino_list, "Key", "Value", values != null ? values : new int[] { -1 }); if (!string.IsNullOrEmpty(placeholder)) { select_list.First().Disabled = true; } return(select_list); }