Here on my example, what I am trying to do here is do a left join using LINQ with Lambda Query Syntax. But I always get an Inner Join results. Here is my sample data:
Person magnus = new Person { FirstName = "Magnus", LastName = "Hedlund" };
Person terry = new Person { FirstName = "Terry", LastName = "Adams" };
Person charlotte = new Person { FirstName = "Charlotte", LastName = "Weiss" };
Person arlene = new Person { FirstName = "Arlene", LastName = "Huff" };
Pet barley = new Pet { Name = "Barley", Owner = "terry" };
Pet boots = new Pet { Name = "Boots", Owner = "terry" };
Pet whiskers = new Pet { Name = "Whiskers", Owner = "charlotte" };
Pet bluemoon = new Pet { Name = "Blue Moon", Owner = "terry" };
Pet daisy = new Pet { Name = "Daisy", Owner = "magnus" };
And here's my declaration on my List:
List<Person> people = new List<Person> { magnus, terry, charlotte, arlene };
List<Pet> pets = new List<Pet> { barley, boots, whiskers, bluemoon, daisy };
Now here's my LINQ Query which I want is a Left Join:
var query1 = people.Join(pets, oP => oP.FirstName.ToLower(), oPe => oPe.Owner.ToLower(),
(peeps, peets)
=> new
{
PersonFirstName = peeps.FirstName,
PersonLastName = peeps.LastName,
DogName = peets?.Name ?? string.Empty
});
But instead I receive an Inner Join results:
I am missing
Arlene
that is supposedly part of the result. I think I am missing something on my LINQ Query.