C#中如何将枚举的指定值(C、E、F、H)添加到列表?
如何从枚举中筛选指定值生成列表?
给定如下枚举类型:
public enum myEnum{ A, B, C, D, E, F, G, H }
如果使用System.Enum.GetValues(typeof(myEnum)).Cast<myEnum>().ToList()会获取所有枚举值,要仅筛选出C、E、F、H这几个值,可以用以下几种方法:
方法一:直接构造目标列表
这是最直接高效的方式,不需要遍历所有枚举值:
var targetEnums = new List<myEnum> { myEnum.C, myEnum.E, myEnum.F, myEnum.H };
方法二:LINQ筛选+集合判断
如果需要从全量枚举值中筛选,可结合LINQ的Where方法,用HashSet提升查询效率:
var allowedValues = new HashSet<myEnum> { myEnum.C, myEnum.E, myEnum.F, myEnum.H }; var listOfEnums = System.Enum.GetValues(typeof(myEnum)) .Cast<myEnum>() .Where(e => allowedValues.Contains(e)) .ToList();
方法三:按枚举名称字符串筛选
如果需要基于枚举的名称字符串进行匹配,可使用如下写法:
var allowedNames = new HashSet<string> { "C", "E", "F", "H" }; var listOfEnums = System.Enum.GetValues(typeof(myEnum)) .Cast<myEnum>() .Where(e => allowedNames.Contains(e.ToString())) .ToList();
内容的提问来源于stack exchange,提问作者user2580179
相关产品推荐
相关产品推荐

