savantKing
savantKing

Reputation: 89

Left join with LINQ with entityframework

I try to make a left query with linq:

public IQueryable<Mutatie> GetMutaties()
        {
            var query = (from m in context.Mutatie
                        join d in context.tblDienstverband on m.fkDienstVerbandID equals d.DienstverbandID
                        join med in context.tblMedewerker on d.fkMedewerkerID equals med.MedewerkerID
                        where med.fkKlantID == this.klantId
                        select m).Include(d => d.fkDienstVerbandID);
            return query;
        }

But how to make this to have a left query?

Thank you

I have it now like this:

var query = (from m in context.Mutatie
                         join d in context.tblDienstverband on m.fkDienstVerbandID equals d.DienstverbandID into grp
                         from d in grp.DefaultIfEmpty()

                         join med in context.tblMedewerker on d.fkMedewerkerID equals med.MedewerkerID into grp1
                         from med in grp.DefaultIfEmpty()

                         where med.fkMedewerkerID == this.klantId
                         select new { m, d, med });
            return query;

Upvotes: 0

Views: 39

Answers (1)

Hieu Le
Hieu Le

Reputation: 1132

It should like this:

NOTE: d and med are null if no row match

public IQueryable<Mutatie> GetMutaties()
{
    var query = (from m in context.Mutatie
                join d in context.tblDienstverband on m.fkDienstVerbandID equals d.DienstverbandID into grp
                from d in grp.DefaultIfEmpty()

                join med in context.tblMedewerker on d.fkMedewerkerID equals med.MedewerkerID into grp_med
                from med in grp_med.DefaultIfEmpty()

                where med.fkKlantID == this.klantId
                //select new { m, d, med };
                select m;
    return query;
}

Upvotes: 1

Related Questions