Skip to content

Instantly share code, notes, and snippets.

View YPermitin's full-sized avatar
☺️
Life is perfect

Permitin Yury YPermitin

☺️
Life is perfect
View GitHub Profile
@andrew-t-moore
andrew-t-moore / LeftJoinExtension.cs
Created September 3, 2012 12:00
Left join extension method
public static class QueryableExtensions {
public static IQueryable<TResult> LeftJoin<TOuter, TInner, TKey, TResult> (
this IQueryable<TOuter> outer,
IQueryable<TInner> inner,
Expression<Func<TOuter, TKey>> outerKeySelector,
Expression<Func<TInner, TKey>> innerKeySelector,
Expression<Func<JoinResult<TOuter, TInner>, TResult>> resultSelector) {
var result = outer
.GroupJoin(inner, outerKeySelector, innerKeySelector, (outer1, inners) => new { outer1, inners = inners.DefaultIfEmpty() })
.SelectMany(row => row.inners, (row, inner1) => new JoinResult<TOuter, TInner> { Outer = row.outer1, Inner = inner1 })