1) SELECT ... LIMIT 100 OFFSET 300
2) Это добавит тормозов, т.к. базе придётся прочитать все миллион строк и отсортировать их. Если это не критично, то не стоит.
3) Это как?
public static int CompareToByNameAge(Pers p1, Pers p2)
{
int v = p1.Name.CompareTo(p2.Name);
if (v == 0)
{
int t = p1.Age.CompareTo(p2.Age);
return t;
}
return v;
}