CAML 查询中的自定义排序顺序
Custom Sort Order in CAML Query
如何告诉 CAML 查询以完全自定义的顺序对结果进行排序?
.
例如,对于给定的字段:
--当等于顶部的'Chestnut'时,
-- 然后等于'Zebra' next,
-- 那么等于 'House'?
最后,在这些分组中,按第二个条件(例如 'Name')排序,通常是升序。
所以这个
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)))
.
现在可以对计算列进行排序,这会将自定义排序顺序转换为数字。另一种解决方案是您创建第二个列表,其中包含要拥有的项目,以及包含其排序顺序的第二列。您可以 link 这两个列表并按项目列表排序顺序进行排序。好处是更改排序顺序就像编辑相应的列表项一样简单。
如何告诉 CAML 查询以完全自定义的顺序对结果进行排序?
.
例如,对于给定的字段:
--当等于顶部的'Chestnut'时,
-- 然后等于'Zebra' next,
-- 那么等于 'House'?
最后,在这些分组中,按第二个条件(例如 'Name')排序,通常是升序。
所以这个
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)))
.
现在可以对计算列进行排序,这会将自定义排序顺序转换为数字。另一种解决方案是您创建第二个列表,其中包含要拥有的项目,以及包含其排序顺序的第二列。您可以 link 这两个列表并按项目列表排序顺序进行排序。好处是更改排序顺序就像编辑相应的列表项一样简单。