-
Notifications
You must be signed in to change notification settings - Fork 847
Open
Labels
Area-QueriesQuery expressions and library implementationQuery expressions and library implementationFeature Improvement
Milestone
Description
I'm creating this issue as a discussion about leftOuterJoin operator. Current implementation is inconsistent with C# version and libraries are reluctant to support F# version as well which leads to lack of very useful tools.
For example let's take Linq2Db issue that is not fixed for years or SQLProvider workaround which introduced another operator.
The key issue can be visible here
C#
.GroupJoin(
name,
c => c.ParentId,
p => p.ParentId,
(o, gr) => new { o = o; gr = gr })
.SelectMany(
t => t.gr.DefaultIfEmpty(),
(o, i) => new { o = o; gr = gr; i = i}
)
F# equivalent when applying leftOuterJoin
.GroupJoin(
name,
c => c.ParentId,
p => p.ParentId,
(o, gr) => new { o = o; gr = gr.DefaultIfEmpty() })
.SelectMany(
t => t.gr,
(o, i) => new { o = o; gr = gr; i = i}
)
Microsoft documented C# behaviour of DefaultIfEmpty() insertion which is different from F# behaviour, which leads to the issues.
So my question is shouldn't a breaking change be made to equalize left joins and let F# developers use C# tools?
Szer, Trigun27, sandboxa13, Liminiens, Ruraga7 and 5 moreMaceWindu and Neftedollar
Metadata
Metadata
Assignees
Labels
Area-QueriesQuery expressions and library implementationQuery expressions and library implementationFeature Improvement
Type
Projects
Status
New