Reputation: 2194
I'm trying to join 4 tables using linq.
This is my code,
var query = Context.AanvraagV.Join(Context.IdnPartijMVSet, aanvraag => aanvraag.AlvNummer, partijMv => partijMv.AlvNummer, (aanvraag, partijMv) => new { aanvraag, partijMv })
.Join(Context.DossierVaststellingSet, aanvraag => aanvraag.aanvraag.AanvraagId, dossierVaststelling => dossierVaststelling.DossierVersieId, (aanvraag, dossierVaststelling) => new { aanvraag, dossierVaststelling })
.Join(Context.IdnPartijVoorkeurContactMVSet, aanvraag => aanvraag.aanvraag.partijMv.AlvNummer, partijVoorkeur => partijVoorkeur.AlvNummer, (aanvraag, partijVoorkeur) => new { aanvraag, partijVoorkeur });
Then I return a query and this is what I get
return query.Select(x => new ZoekResultaatDto{
AanvraagNummer = x.aanvraag.aanvraag.aanvraag.DossierNummer,
Versie = x.aanvraag.aanvraag.aanvraag.AanvraagVersie,
StartjaarAanvraag = x.aanvraag.aanvraag.aanvraag.AanvraagStartCampagne,
EindjaarAanvraag = x.aanvraag.aanvraag.aanvraag.AanvraagEindCampagne,
Maatregel = x.aanvraag.aanvraag.aanvraag.Maatregel,
Pakket = x.aanvraag.aanvraag.aanvraag.MaatregelPakket,
AanvraagType = x.aanvraag.aanvraag.aanvraag.Aanvragtype,
Eenheid = x.aanvraag.aanvraag.aanvraag.VerbintenisWaardeEenheid,
VerbintenisOppervlakte = x.aanvraag.aanvraag.aanvraag.VerbintenisWaarde,
KeuzeBevestiging = x.aanvraag.aanvraag.aanvraag.KeuzeBevestiging,
IndieningsdatumAanvraag = x.aanvraag.aanvraag.aanvraag.AanvraagIndieningsDatum,
Status = x.aanvraag.aanvraag.aanvraag.AanvraagStatus,
LandbouwerNummer = x.aanvraag.aanvraag.aanvraag.AlvNummer,
Naam = x.aanvraag.aanvraag.partijMv.Naam,
Rechtsvorm = x.aanvraag.aanvraag.partijMv.Rechtsvorm ,
Adres = string.Format("{0} {1} {2}", x.aanvraag.aanvraag.partijMv.Straat, x.aanvraag.aanvraag.partijMv.Huisnummer, x.aanvraag.aanvraag.partijMv.Bus),
Postcode = x.aanvraag.aanvraag.partijMv.Postcode,
Gemeente = x.aanvraag.aanvraag.partijMv.Gemeente,
EmailaAdres = x.partijVoorkeur.Email,
OpmerkingCode = x.aanvraag.dossierVaststelling.VaststellingCode,
OpmerkingOmschrijving = RefVaststellingResources.OMSCHRIJVING(x.aanvraag.dossierVaststelling)
}).ToList();
But this is not what I want. What i want is this. How can I change the joins to get this instead?
return query.Select(x => new ZoekResultaatDto{
AanvraagNummer = x.aanvraag.DossierNummer,
Versie = x.aanvraag.AanvraagVersie,
StartjaarAanvraag = x.aanvraag.AanvraagStartCampagne,
EindjaarAanvraag = x.aanvraag.AanvraagEindCampagne,
Maatregel = x.aanvraag.Maatregel,
Pakket = x.aanvraag.MaatregelPakket,
AanvraagType = x.aanvraag.Aanvragtype,
Eenheid = x.aanvraag.VerbintenisWaardeEenheid,
VerbintenisOppervlakte = x.aanvraag.VerbintenisWaarde,
KeuzeBevestiging = x.aanvraag.KeuzeBevestiging,
IndieningsdatumAanvraag = x.aanvraag.AanvraagIndieningsDatum,
Status = x.aanvraag.AanvraagStatus,
LandbouwerNummer = x.aanvraag.AlvNummer,
Naam = x.partijMv.Naam,
Rechtsvorm = x.partijMv.Rechtsvorm ,
Adres = string.Format("{0} {1} {2}", x.partijMv.Straat, x.partijMv.Huisnummer, x.partijMv.Bus),
Postcode = x.partijMv.Postcode,
Gemeente = x.partijMv.Gemeente,
EmailaAdres = x.partijVoorkeur.Email,
OpmerkingCode = x.dossierVaststelling.VaststellingCode,
OpmerkingOmschrijving = RefVaststellingResources.OMSCHRIJVING(x.dossierVaststelling)
}).ToList();
Upvotes: 1
Views: 48
Reputation: 2194
I did it. And also solved the problem of returning a AnonymousType
public class ZoekResultaatLijstDto
{
public AanvraagV aanvraag { get; set; }
public IdnPartijMV idnPartijMv { get; set; }
public DossierVaststelling dossierVast { get; set; }
public IdnPartijVoorkeurContactMV idnPartijVoor { get; set; }
}
public List<ZoekResultaatLijstDto> GetItems(ZoekCriteriaDto zoekCriteria)
{
IQueryable<ZoekResultaatLijstDto> query = Context.AanvraagV.Join(Context.IdnPartijMVSet, aanvraag => aanvraag.AlvNummer, partijMv => partijMv.AlvNummer, (aanvraag, partijMv) => new { aanvraag, partijMv })
.Join(Context.DossierVaststellingSet, aanvraag => aanvraag.aanvraag.AanvraagId, dossierVaststelling => dossierVaststelling.DossierVersieId,
(aanvraag, dossierVaststelling) => new { aanvraag, dossierVaststelling }).Select( j => new {j.aanvraag, j.aanvraag.partijMv, j.dossierVaststelling})
.Join(Context.IdnPartijVoorkeurContactMVSet, aanvraag => aanvraag.aanvraag.partijMv.AlvNummer, partijVoorkeur => partijVoorkeur.AlvNummer, (aanvraag, partijVoorkeur) => new { aanvraag, partijVoorkeur })
.Select(m => new ZoekResultaatLijstDto() { aanvraag = m.aanvraag.aanvraag.aanvraag, dossierVast = m.aanvraag.dossierVaststelling, idnPartijMv = m.aanvraag.partijMv, idnPartijVoor = m.partijVoorkeur });
return query.Select(zoekResultaat => zoekResultaat).ToList();
}
Upvotes: 1