Отношения многие ко многим Фильтр / Поиск - PullRequest
0 голосов
/ 07 декабря 2018

Здравствуйте, я хочу фильтрации в таблице LanguageSchool, но таблица LanguageSchool связана с таблицей LanguageSchoolProgram (многие ко многим).

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

У меня есть программа языковой школы X, программа языковой школы Y и языковая программа Z, а также много языковых школ.

Я хочу выбрать языковые школы, но языковые школы содержат X иПрограмма Y.

, и я должен использовать функцию .AsQueryable().

1 Ответ

0 голосов
/ 08 декабря 2018

Ваш вопрос не ясен ... Я не уверен, как вы храните программы X, Y, Z?Я предполагаю, что это названия программ.

Вы можете определить отношение «многие ко многим» следующим образом:

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

И использовать Contains для выбора школ с программами в списке:

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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...