接受Enum比较的方法

Tre*_*ent 1 c# enums

我确信这可能已被问到,但我似乎无法找到正确的答案......可能只是使用了错误的搜索条件.无论如何,我有以下代码;

if (e.Menu.Id.Equals(SchedulerMenuItemId.AppointmentMenu) ||
    e.Menu.Id.Equals(SchedulerMenuItemId.AppointmentDependencyMenu))
{ ... }
Run Code Online (Sandbox Code Playgroud)

对我来说似乎有点多余/重复.我不能使用按位OR,因为枚举没有标记为Flag.我想这是因为定义了71个枚举值,这有点超出了Flag选项......

可能我可以做一个转换,并让案件"通过",这可能是一个更清洁......

有没有其他方式进行比较,如上面的(考虑到可扩展性和可读性),它可能不仅仅是2次比较.

Sel*_*enç 6

您可以随时使用LINQ

var enums = new[]
        {
            SchedulerMenuItemId.AppointmentMenu
            SchedulerMenuItemId.AppointmentDependencyMenu
        };

if(enums.Any(x => (int)x == e.Menu.Id)) { }
Run Code Online (Sandbox Code Playgroud)