Sam Reinhart, Nick Baptiste and Laurent Dauphin also scored for the Canadians, who will play Finland on Friday. The United States will face host Russia in the other semifinal.
Desrosiers, who was coming off a 6-0 shutout win over Sweden on Tuesday, made 19 saves.
"He was outstanding," said Canadian assistant coach Jody Hull. "It was a really tight game. It was 1-0 at one point and we ended up giving them a breakaway while on the power play and he made a great stop. We just stayed with what we were doing and that gave us a little bit of momentum. You could tell on the bench that the guys were fired up after that save. We kind of fed off that.
"That's all you want your goalies to do — make the stops when they're there to make and Philippe's been doing that for us the last couple of games."
Canada led 3-0 after two periods.
McDavid scored back-to-back goals in the third to put the game out of reach. The 16-year-old Erie Otters forward leads the tournament with eight goals and six assists in five games.
Jindrich Pacl stopped 31 shots in net for the Czech Republic.
In the other quarter-final games, Finland beat Switzerland 7-4, the United States blanked Sweden 4-0 and Russia downed Germany 8-4.