Extension methods?
bool Between(this int value, int left, int right)
{
return value > left && value < right;
}
if(x.Between(4199, 6800) || x.Between(6999, 8200) || ...)
You can also do this awful hack:
bool Between(this int value, params int[] values)
{
// Should be even number of items
Debug.Asset(values.Length % 2 == 0);
for(int i = 0; i < values.Length; i += 2)
if(!x.Between(values[i], values[i + 1])
return false;
return true;
}
if(x.Between(4199, 6800, 6999, 8200, ...)
Awful hack, improved:
class Range
{
int Left { get; set; }
int Right { get; set; }
// Constructors, etc.
}
bool R(int left, int right)
{
return new Range(left, right)
}
bool Between(this int value, params Range[] ranges)
{
for(int i = 0; i < values.Length; ++i)
if(!x.Between(values[i].Left, values[i].Right)
return false;
return true;
}
if(x.Between(R(4199, 6800), R(6999, 8200), ...))
Or, better yet (this does not allow duplicate lower bounds):
bool Between(this int value, Dictionary<int, int> ranges)
{
// Basically iterate over Key-Value pairs and check if value falls within that range
}
if(x.Between({ { 4199, 6800 }, { 6999, 8200 }, ... }