枚举值提取

时间:2013-11-25 22:12:43

标签: c# enums

我有一个枚举类型(即View)。我想提取此枚举的一部分[顶部,底部,左侧,右侧,前部,后部]以添加到组合框中ComboBox.DataSource = Enum.GetValues(typeof(View_extracted)).

有可能吗?

enum View {Top,Bottom,Left,Right,Front,Rear,Trimetric,Isometric,Diametric}

View_extracted应仅包含前6个值:

{Top,Bottom,Left,Right,Front,Rear}

2 个答案:

答案 0 :(得分:6)

LINQ救援!

Enum.GetValues(typeof(View)).Cast<View>().Take(6);

如果你想要它是一个合适的枚举,你可以搞乱ILGen,但它的方式,方式比它的价值更麻烦。

答案 1 :(得分:-1)

不,严格来说无法创建类型View_extracted,可以使用确切代码来调用以创建所述结果。

虽然你可以创建另一个枚举,其枚举值恰好与其他枚举相同,但你可以创建一个方法(必须与你描述的不同)得到这个枚举值的列表,它是一个非常脆弱的系统。

我建议做的不是创建一个新的枚举作为视图,而是简单地创建一个新方法作为返回此枚举值的视图,如:

public static IEnumerable<View> ExtractedView()
{
    //return a sequence of the views here, whether it be a hard code list,
    // or a filtered result of a call to Enum.GetValues, or whatever
}