如何告诉CAML查询以完全自定义的顺序对结果进行分类?
。
例如,对于给定的字段:
- 当顶部等于"栗子"时,
- 然后等于"斑马",
- 然后等于"房子"?
最后,在这些分组中,在第二个条件(例如"名称")上排序,通常是上升。
所以这个
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中完成?不多!
CAML据我所知,没有这样的排序操作员。解决方法可能是您使用数字数据类型和公式将计算的列添加到列表中 =IF(Owns="Chestnut",0,IF(Owns="Zebra",1,IF(Owns="House",3,999)))
。
现在可以在计算的列上订购,该列将自定义排序顺序转换为数字。另一个解决方案是,您可以使用要拥有的项目创建第二个列表,以及包含其排序顺序的第二列。您可以通过项目列表排序订单链接这两个列表并订购。好处是,排序顺序的更改就像编辑各自的ListItems一样容易。