Ciao voglio filtrare alla tabella LanguageSchool ma la tabella LanguageSchool ha una relazione con la tabella LanguageSchoolProgram (molti a molti).
public class LanguageSchool
{
public virtual List<LanguageSchoolLanguageSchoolProgram> LanguageSchoolLanguageSchoolPrograms { get; set; }
}
public class LanguageSchoolProgram
{
public long Id { get; set; }
public virtual List<LanguageSchoolLanguageSchoolProgram> LanguageSchoolLanguageSchoolPrograms { get; set; }
}
public class LanguageSchoolLanguageSchoolProgram
{
public long LanguageSchoolProgramId { get; set; }
public virtual LanguageSchoolProgram LanguageSchoolProgram { get; set; }
public long LanguageSchoolId { get; set; }
public virtual LanguageSchool LanguageSchool { get; set; }
}
Ho un programma X Language School, Y Language School Program e Z Language Program e molte scuole di lingue.
Voglio selezionare scuole di lingua, ma le scuole di lingue hanno programmi X e Y.
e devo usare la funzione. .AsQueryable()
.
La tua domanda non è chiara ... Non sono sicuro di come archivi i programmi X, Y, Z? Presumo che questi siano nomi di programmi.
Puoi definire la tua relazione molti a molti in questo modo:
public class LanguageSchool
{
public int LanguageSchoolId { get; set; }
public virtual ICollection<LanguageSchoolProgram> LanguageSchoolPrograms { get; set; }
}
public class LanguageSchoolProgram
{
public int LanguageSchoolProgramId { get; set; }
public string ProgramName {get; set;} // this is X, Y or Z
public virtual ICollection<LanguageSchool> LanguageSchools { get; set; }
}
E usa Contains
per selezionare le scuole con i programmi nell'elenco:
string[] requiredPrograms = new string[] {"X", "Y", "X"};
var schoolsQueryable = dbContext.LanguageSchool.Where(
ls => requiredPrograms.contains(ls.LanguageSchoolProgram.ProgramName));
// if you don't want Queryable, then add ToList()