查询表达式自联接



如何更改此查询表达式的join子句,使我不必将parent.ID包装在option中,只需加入可能是None的候选child.ParentID

query { for parent in d.People do
        join child in d.People on (Some parent.ID = child.ParentID)
        exists (child.Birthdate <= parent.Birthdate) }

谢谢!

您可能会喜欢这个。这种方法可能有一种更优雅的语法,我预计最终它的表现不会有太大的不同,如果有的话,但它是:

query { for child in d.People do
        where (child.ParentID.IsSome)
        join parent in d.People on (child.ParentID.Value = parent.ID)
        exists (child.Birthdate <= parent.Birthdate) }

我第一次想到这个,但我想知道它是否意味着在过滤掉None值之前调用Value

query { for parent in d.People do
        join child in d.People on (parent.ID = child.ParentID.Value)
        where (child.ParentID.IsSome)
        exists (child.Birthdate <= parent.Birthdate) }

为了保持父级优先,并将子级过滤器放在联接条件之前,可以执行子查询,但这似乎是一个更糟糕的解决方案,而不是更好的解决方案。如果有人知道不使用子查询的方法,请添加评论。

相关内容

  • 没有找到相关文章

最新更新