我有一组标记的枚举,如下所示:
[Flags]
enum EnumThing
{
A = 1,
B = 2,
C = 4,
D = 8
}
Run Code Online (Sandbox Code Playgroud)
我想使用LINQ选择集合中的所有标志。假设集合是这样的:
EnumThing ab = EnumThing.A | EnumThing.B;
EnumThing ad = EnumTHing.A | EnumThing.D;
var enumList = new List<EnumThing> { ab, ad };
Run Code Online (Sandbox Code Playgroud)
按位显示如下:
0011
1001
Run Code Online (Sandbox Code Playgroud)
预期的结果是这样的:
1011
Run Code Online (Sandbox Code Playgroud)
可以通过以下代码在普通C#中实现所需的结果:
EnumThing wishedOutcome = ab | ad;
Run Code Online (Sandbox Code Playgroud)
或在SQL中
select 3 | 9
Run Code Online (Sandbox Code Playgroud)
但是,如何在enumList使用Linq的过程中选择所有选中的标志EnumThing?