如何告诉CAML查询以完全自定义的顺序对结果进行排序?
例如,对于给定的字段:
- 等于'栗子'在顶部,
- 然后等于' Zebra'接下来,
- 然后等于' House'?
最后,在这些分组中,排序第二个条件(例如'名称'),通常是升序。
所以这个
ID Owns Name
————————————————————
1 Zebra Sue
2 House Jim
3 Chestnut Sid
4 House Ken
5 Zebra Bob
6 Chestnut Lou
变为
ID Owns Name
————————————————————
6 Chestnut Lou
3 Chestnut Sid
5 Zebra Bob
1 Zebra Sue
2 House Jim
4 House Ken
在SQL中,可以使用Case/When.
来完成,但是在CAML中?没那么多!
答案 0 :(得分:1)
据我所知,CAML没有这样的排序运算符。解决方法可能是您使用数字数据类型和公式将计算列添加到列表中
=IF(Owns="Chestnut",0,IF(Owns="Zebra",1,IF(Owns="House",3,999)))
。
现在可以在计算列上进行排序,该列将自定义排序顺序转换为数字。另一个解决方案是您创建第二个列表,其中包含要拥有的项目,第二个列包含其排序顺序。您可以链接这两个列表,并按项目列表排序顺序排序。好处是排序顺序的变化就像编辑相应的列表项一样简单。