代码之家  ›  专栏  ›  技术社区  ›  Carvellis

编译查询中是否可以使用Switch语句?

  •  4
  • Carvellis  · 技术社区  · 16 年前

    例如,当从数据库返回已排序的记录时,我希望在一个已编译的查询中使用类似switch的语句对不同的属性进行排序,而不必编写两个已编译的查询(升序&降序)对于您可能要排序的每个属性,即使是一个简单的可排序网格,也可以是最多10个已编译查询。

    1 回复  |  直到 15 年前
        1
  •  3
  •   Community Mohan Dere    9 年前

    kyndigs 在他的评论中,唯一的解决方法是用 ? :

            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)
            ));