Если вы хотите перебрать его, вы можете перебрать только значения:
foreach(var value in hashtable.Values)
{
}
Что касается того, почему используется Hashtable, а не DataTable, DataTable является более богатым с точки зрения функциональности и более тяжелым с точки зрения памяти и накладных расходов на обработку.
Однако я бы сказал, что, поскольку Hashtable не является строго типизированным, в наши дни более обычным является использование универсальной коллекции, такой как Dictionary.