As kyndigs refers in his comment, the only solution is to fake the switch statement with a tertiary statement ? : ::
internal static readonly Func<MyEntities, long, MessageSortField, int, int, IQueryable<Model.Message>> MessagesPagedSortedAscQuery = CompiledQuery.Compile((MyEntities db, long folderId, MessageSortField sortField, int skip, int take) => ( sortField == MessageSortField.Date ? db.Messages.Where(e => e.FolderId == folderId).OrderBy(m => m.Date).Skip(skip).Take(take) : sortField == MessageSortField.Subject ? db.Messages.Where(e => e.FolderId == folderId).OrderBy(m => m.Subject).Skip(skip).Take(take) : sortField == MessageSortField.From ? db.Messages.Where(e => e.FolderId == folderId).OrderBy(m => m.From).Skip(skip).Take(take) : db.Messages.Where(e => e.FolderId == folderId).Skip(skip).Take(take) ));
source share