在CoolStorage中对可空的子属性进行排序

时间:2009-09-17 12:15:13

标签: coolstorage

Lets说我们有Films和HeaderItems。有时电影有一个HeaderItem链接到它OneToOne但不总是。

现在我想对他们标题上的所有电影进行排序但是我希望连接到HeaderItem的电影能够对HeaderItem.Position进行排序(如果HeaderItem不为空)。

我尝试在Films和OneToOne上实现OneToMany,但我可以让排序工作。他无法将QueryExpression转换为String,反之亦然。

关于如何做到这一点的任何想法?

2 个答案:

答案 0 :(得分:1)

好的,我明白了。

首先,我将Film和HeaderItem之间的关系更改为OneToMany。

然后我用了

Film.OrderedList("$ISNULL(HeaderItem.ShowOnTopInCategory, 0)-, Top10, MovieTitle");

首先获取一个由headerItems订购的电影列表,然后是其余部分。

效果很好。顺便说一句,ISNULL前面的$ -sign避免了被CoolStorage SQL解析器替换的ISNULL。

答案 1 :(得分:0)

我没有尝试过,但实际上可能会有效:

  Film.List().OrderedBy("HeaderItem.Position,Title");

如果这不起作用,我担心您必须使用ORDER BY子句中的CASE语句创建视图或执行临时SQL。