By definition,
Select[list,crit]
picks out ALL elements of the list for which crit is True.
whereas
TakeWhile[list,crit]
gives elements of the list from the beginning for which crit is True but stops at the value for which crit is not true. It doesn't evaluate further.
For e.g.
Select[{a, 1, 2, 3, b, c, 4, d, 5}, IntegerQ]
{1, 2, 3, 4, 5}
But
TakeWhile[{a, 1, 2, 3, b, c, 4, d, 5}, IntegerQ]
{}