Fire Rescue says emergency workers were called to the scene near Hayter Road and Meridian Street just outside the city's eastern boundary after 9 a.m. MT Wednesday.
A spokesperson for CN Rail told CBC News that the three were contract workers for A&B Rail Services Ltd, who were doing regular maintenance. The three men were using snowblowers to clean the tracks when an eastbound train approached them travelling approximately 40 km/h.
The train blew its horn as a warning but the workers were wearing ear protection and did not seem to notice, Edmonton police said.
One of the men was taken to Royal Alexandra Hospital, while the other two are at the University of Alberta Hospital.
Four separate investigations by the federal and provincial governments, as well as CN Rail and A&B, are looking into the incident.