Проблема в том, что
Оператор не дает, что это будет
поддерживать первоначальный порядок
значения.
Таким образом, ваш запрос должен работать следующим образом
var names = (from DataRow dr in dataTable.Rows
select (string)dr["Name"]).Distinct().OrderBy( name => name );