2012-05-29 12 views
5

All'interno del mio file di contesto, ho impostato una relazione molti a molti tra la mia classe Location e la classe Program.Querying molti a molti e condizionale Dove

Sto creando un modulo di ricerca/filtro in cui l'utente dovrà essere in grado di filtrare le posizioni selezionando un programma.

Il mio pensiero era di interrogare la tabella della giunzione (M2M) e quindi unirmi a quella di backup con la tabella delle posizioni.

Il problema è che non ho una classe che rappresenta la tabella M2M diversa dal mio metodo OnModelCreating.

Posso ottenere un esempio su come farlo?

Fondamentalmente select * da postazioni l unire locationsprograms lp su l.LocationId = lp.locationid e lp.programid = ciò che è stato passato in.

Grazie.

risposta

5
var locations = dbContext.Locations 
    .Where(l => l.Programs.Any(p => p.ProgramId == whateverWasPassedInId)) 
    .ToList(); 

O (funziona perché il filtrando dalla struttura primaria chiave di Program):

var locations = dbContext.Programs 
    .Where(p => p.ProgramId == whateverWasPassedInId) 
    .Select(p => p.Locations) 
    .SingleOrDefault();