private async Task DoOuterJoin() { var enumerable = connection.RunAsync( testTable.OuterJoin( anotherTestTable, (testObject, anotherTestObject) => testObject.Name == anotherTestObject.FirstName ) ); Assert.That(enumerable, Is.Not.Null); var objects = new List <Tuple <TestObject, AnotherTestObject> >(); var count = 0; while (true) { if (!await enumerable.MoveNext()) { break; } objects.Add(enumerable.Current); ++count; var tup = enumerable.Current; Assert.That(tup.Item1, Is.Not.Null); if (tup.Item1.Id == "4") { Assert.That(tup.Item2, Is.Null); } else { Assert.That(tup.Item2, Is.Not.Null); Assert.That(tup.Item1.Name, Is.EqualTo(tup.Item2.FirstName)); } } Assert.That(count, Is.EqualTo(4)); Assert.That(objects, Has.Count.EqualTo(4)); }