Jerad Rose Jerad Rose - 1 month ago 7
C# Question

Value is in enum list

I have a fairly basic question: How can I check if a given value is contained in a list of enum values?

For example, I have this enum:

public enum UserStatus
{
Unverified,
Active,
Removed,
Suspended,
Banned
}


Now I want to check if
status in (Unverified, Active)


I know this works:

bool ok = status == UserStatus.Unverified || status == UserStatus.Active;


But there has to be a more elegant way to write this.

The topic of this queston is very similar, but that's dealing with flags enums, and this is not a flags enum.

Thanks in advance.

Answer

Here is an extension method that helps a lot in a lot of circumstances.

public static class Ext
{
    public static bool In<T>(this T val, params T[] values) where T : struct
    {
        return values.Contains(val);
    }
}

Usage:

Console.WriteLine(1.In(2, 1, 3));
Console.WriteLine(1.In(2, 3));
Console.WriteLine(UserStatus.Active.In(UserStatus.Removed, UserStatus.Banned));
Comments