小编Br2*_*Br2的帖子

使用LINQ选择枚举中的所有标记值

我有一组标记的枚举,如下所示:

[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

c# linq enums enum-flags

2
推荐指数
1
解决办法
555
查看次数

标签 统计

c# ×1

enum-flags ×1

enums ×1

linq ×1