次の順序値

ソート済みの string[] から、特定の文字列で開始するインデックスの範囲を知りたい。
「次の順序値」が明確な型であれば、これは結構簡単で、

bool GetRange(int[] array, int value, out int min, out int max)
{
  min = Array.BinarySearch(value);
  max = Array.BinarySearch(value + 1);

  if (min < 0) min = ~min;
  if (max < 0) max = ~max;

  max--;
  return (min <= max);
}

ここから、上記を string 型にしたり、T 型にして List`1 を引数にとるようにすることはちょっと難しい。*1
Comparer.Default とか比較処理は固定でいいので、文字列の「次」を明確に指定するのはどうするといいんだろうかね。

*1:T 型に関しては、http://d.hatena.ne.jp/ladybug/archive?word=IMath なかんじで T.Inc() が呼び出せれば問題ないんだけど