将枚举转换为List

问题描述 投票:88回答:2

如何将以下枚举转换为字符串列表?

[Flags]
public enum DataSourceTypes
{
    None = 0,
    Grid = 1,
    ExcelFile = 2,
    ODBC = 4
};

我找不到这个确切的问题,这个Enum to List是最接近的,但我特别想要List<string>

c# .net enums generic-list
2个回答
158
投票

使用Enum的静态方法GetNames。它返回一个GetNames,如下所示:

string[]

如果要创建仅对一种类型的Enum.GetNames(typeof(DataSourceTypes)) 执行仅此操作并将该数组转换为enum的方法,则可以编写如下内容:

List

您需要在类的顶部使用public List<string> GetDataSourceTypes() { return Enum.GetNames(typeof(DataSourceTypes)).ToList(); } 来使用.ToList()


27
投票

我想添加另一个解决方案:就我而言,我需要在下拉按钮列表项中使用一个Enum组。因此它们可能有空间,即需要更多用户友好的描述:

Using System.Linq;

在帮助程序类(HelperMethods)中,我创建了以下方法:

  public enum CancelReasonsEnum
{
    [Description("In rush")]
    InRush,
    [Description("Need more coffee")]
    NeedMoreCoffee,
    [Description("Call me back in 5 minutes!")]
    In5Minutes
}

[当您呼叫此助手时,您将获得项目描述的列表。

 public static List<string> GetListOfDescription<T>() where T : struct
    {
        Type t = typeof(T);
        return !t.IsEnum ? null : Enum.GetValues(t).Cast<Enum>().Select(x => x.GetDescription()).ToList();
    }

添加:无论如何,如果您想实现此方法,则需要:GetDescription扩展枚举。这就是我用的。

 List<string> items = HelperMethods.GetListOfDescription<CancelReasonEnum>();
© www.soinside.com 2019 - 2024. All rights reserved.