How to check If a Enum contain a number?
Try this:
IEnumerable<int> values = Enum.GetValues(typeof(PromotionTypes))
.OfType<PromotionTypes>()
.Select(s => (int)s);
if(values.Contains(yournumber))
{
//...
}
Maybe you want to check and use the enum of the string value:
string strType;
if(Enum.TryParse(strType, out MyEnum myEnum))
{
// use myEnum
}
You should use Enum.IsDefined
.
I tried Enum.IsDefine but it only check the String value.
I'm 100% sure it will check both string value and int(the underlying) value, at least on my machine.
The IsDefined
method requires two parameters. The first parameter is the type of the enumeration to be checked. This type is usually obtained using a typeof expression. The second parameter is defined as a basic object. It is used to specify either the integer value or a string containing the name of the constant to find. The return value is a Boolean that is true if the value exists and false if it does not.
enum Status
{
OK = 0,
Warning = 64,
Error = 256
}
static void Main(string[] args)
{
bool exists;
// Testing for Integer Values
exists = Enum.IsDefined(typeof(Status), 0); // exists = true
exists = Enum.IsDefined(typeof(Status), 1); // exists = false
// Testing for Constant Names
exists = Enum.IsDefined(typeof(Status), "OK"); // exists = true
exists = Enum.IsDefined(typeof(Status), "NotOK"); // exists = false
}
SOURCE