I have a list of values like this
1000, 20400
22200, 24444
The ranges don\'t overlap.
What I want to do is have a c# function that can
class Ranges
{
    int[] starts = new[] { 1000, 22200 };
    int[] ends = new[] { 20400, 24444 };
    public int RangeIndex(int test)
    {
        int index = -1;
        if (test >= starts[0] && test <= ends[ends.Length - 1])
        {
            index = Array.BinarySearch(ends, test);
            if (index <= 0)
            {
                index = ~index;
                if (starts[index] > test) index = -1;
            }
        }
        return index;
    }
}
Obviously, how you instantiate the class is up to you. Maybe pass in a DataTable and construct the arrays from that.
I'd try the simplest option first, and optimize if that doesn't meet your needs.
class Range {
   int Lower { get; set; }
   int Upper { get; set; }
}
List<Range>.FirstOrDefault(r => i >= r.Lower && i <= r.Upper);