using System.Collections.Generic;
public static void Main()
var received = new List<Foo>{new Foo{ProductId=1,WarehouseSectionId=2}};
var reserved = new List<Foo>{};
var leftOuterJoin = from r in received
on new {a = r.ProductId, b = r.WarehouseSectionId } equals new { a = rs.ProductId, b = rs.WarehouseSectionId } into joinedL
from rs in joinedL.DefaultIfEmpty()
Console.WriteLine(leftOuterJoin.First().ProductId);
public int WarehouseSectionId;