Implement support for the new .NET LeftJoin operator #35451
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This is pretty straightforward - this removes our internal "fake" LeftJoin method, replacing it with the new one introduced into System.Linq; the existing preprocessing conversion of GroupJoin+SelectMany+DefaultIfEmpty to LeftJoin works exactly as before (and will continue to do so).
One tricky aspect here is the tests - all tests exercising left join are currently written using the current GroupJoin+SelectMany+DefaultIfEmpty syntax. Ideally, left join tests should use the new LeftJoin operator, with some specific, targeted tests verifying that the conversion from the old syntax to LeftJoin still works; but this is quite a lot of work. I've changed several easy/obvious tests to use LeftJoin, but have left most tests as-is for now.
In any case, since GroupJoin+SelectMany+DefaultIfEmpty is already well-covered and converts to LeftJoin, LeftJoin is also well-covered.
Closes #12793