2014-09-16 2 views
1

나는 linq를 사용하여 4 개의 테이블을 조인하려고합니다. linq 함께 4 테이블 조인

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 }); 

는 그럼 난 쿼리를 반환하고 이것이 내가

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(); 

을 얻을 것입니다 그러나 이것은 내가 원하는 것이 아니다, 내 코드입니다. 내가 원하는 건 이것이야. 어떻게 대신이 조인을 변경할 수 있습니까?

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(); 

답변

1

나는 그것을했다. 또한 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(); 
}