我有一组标记的枚举,如下所示:
[Flags]
enum EnumThing
{
A = 1,
B = 2,
C = 4,
D = 8
}
我想使用LINQ选择集合中的所有标志。假设集合是这样的:
EnumThing ab = EnumThing.A | EnumThing.B;
EnumThing ad = EnumTHing.A | EnumThing.D;
var enumList = new List<EnumThing> { ab, ad };
按位显示如下:
0011
1001
预期的结果是这样的:
1011
可以通过以下代码在普通C#中实现所需的结果:
EnumThing wishedOutcome = ab | ad;
或在SQL中
select 3 | 9
但是,如何在enumList
使用Linq的过程中选择所有选中的标志EnumThing
?
一个简单的linq解决方案是这样的:
EnumThing ab = EnumThing.A | EnumThing.B;
EnumThing ad = EnumThing.A | EnumThing.D;
var enumList = new List<EnumThing> { ab, ad };
var combined = enumList.Aggregate((result, flag) => result | flag);
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句