DataTable.Select()
не дает строк в том порядке, в котором они присутствовали в datatable.
Если порядок важен, я чувствую, что итерация по коллекции datarow и формирование списка - это правильный путь, или вы также может использовать перегрузку DataTable.Select(string filterexpression, string sort)
.
Но эта перегрузка может не обрабатывать все упорядочения (например, порядок ...), которые предоставляет SQL.