如何将对象集合转换为Enum数组

时间:2014-06-20 02:07:58

标签: c# enums

我似乎一直试图将ListBox项目的集合转换为Enum。

这是我的代码

 ChannelCodeType[] ChannelCodes = lbSearch.SelectedItems;


public enum ChannelCodeType {

        /// <remarks/>
        XYZ1,

        /// <remarks/>
        XYZ1_KIDS,

        /// <remarks/>
        XYZ1_PRIME,

        /// <remarks/>
        XYZ13,

        /// <remarks/>
        XYZ14,
    }

我正在尝试将值(selecteditems)传递回ChannelCodes

1 个答案:

答案 0 :(得分:4)

SelectedItems属性很可能是Object类型的集合。

尝试将集合强制转换回原始类型:

ChannelCodeType[] ChannelCodes
    = lbSearch.SelectedItems.Cast<ChannelCodeType>().ToArray();

我假设lbSearch是一个ListBox,并且它已经填充了ChannelCodeType个值。


如果Baldrick是对的,并且您已经获得ChannelCodeType枚举值的字符串表示,那么您可能需要修改代码以将字符串解析回原始枚举:

ChannelCodeType[] ChannelCodes
  = lbSearch.SelectedItems
            .Cast<string>()
            .Select(c => (ChannelCodeType)Enum.Parse(typeof(ChannelCodeType), c))
            .ToArray();