That's a bit different from my implementation. On page init I'm calling a refresh function that queries the DB, retrieves the results into a list, then sorts that list based on what the user has selected to sort by, then uses that list as the datasource for the scheduler.
Retrieve the data into the list "result".
Order by the field list "names".
result = (from r
where r.AppointmentID != 0
Set the scheduler DataSource equal to "result".
Pare the data down to a distinct set based on the fields that make up the resource.
newResult = (from r
Set the scheduler resource types DataSource equal to the "newResult" list containing the distinct set of the resource fields values.
scheduler.ResourceTypes.DataSource = newResult;
So I can confirm that the lists as they are being set to the datasources are in the desired order. But immediately after that as I write the headers out in the ResourceHeaderCreated event handler, they are not in the order that the lists were set to.