You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Kentico的MultiDocumentQuery中用Case When实现自定义排序?

Kentico 表单页面排序:优先显示F开头的类型

嘿,我懂你现在的困扰——你在Kentico里拉取表单类型页面时,想先把所有以字母F开头的页面类型顶在前面,剩下的再按常规字母顺序排列,但之前的代码只能单纯按FormName排序,没法实现类似SQL里CASE WHEN的逻辑对吧?别担心,我来给你搞定这个。

Kentico的MultiDocumentQuery其实支持直接在OrderBy方法里传入自定义的SQL排序表达式,刚好可以完美复刻你想要的逻辑。修改后的代码如下:

MultiDocumentQuery docQuery = DocumentHelper.GetDocuments()
    .Type("forms")
    .OnSite(SiteContext.CurrentSiteID)
    .Published()
    .OrderBy("CASE WHEN [FormName] LIKE 'F%' THEN 0 ELSE 1 END, [FormName]");

代码说明:

  • 我把你SQL里的CASE WHEN逻辑直接放进了OrderBy参数里,Kentico的查询引擎会自动把这段表达式解析到最终生成的SQL语句中
  • 这段逻辑会给所有以F开头的FormName标记排序优先级为0,其余的标记为1,优先级0的项会全部排在最前面
  • 在优先级排序完成后,同一优先级的项会再按FormName的字母顺序排列,完全匹配你的需求

预期结果示例:

  • Form1
  • Form2
  • Form3
  • AlphaForm
  • BetaForm
  • CharlieForm
  • ...

内容的提问来源于stack exchange,提问作者Dilan Quesada

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 06:45:46