我有一个枚举类型(即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}
答案 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
}