leftOuterJoin MSDN上查询表达式的文档通过示例反复暗示,使用时leftOuterJoin .. on .. into ..仍然必须使用它.DefaultIfEmpty()才能达到预期的效果。
我不认为这是必要的,因为我在这两项测试中得到了相同的结果,唯一的区别在于第二个测试没有.DefaultIfEpmty()
type Test = A | B | C
let G = [| A; B; C|]
let H = [| A; C; C|]
printfn "%A" <| query {
for g in G do
leftOuterJoin h in H on (g = h) into I
for i in I.DefaultIfEmpty() do
select (g, i)}
printfn "%A" <| query {
for g in G do
leftOuterJoin h in H on (g …Run Code Online (Sandbox Code Playgroud)