EF6 LinQ - Выберите потомков, где совпадает выражение - PullRequest
0 голосов
/ 28 мая 2018

Я хочу отфильтровать потомков Школы по одному выражению.Это возможно?Я хочу только учеников с возрастом "12"

Псевдокод

context.Schools.Where(s => s.Name = "Springfield Elementary").Where(s => 
s.Pupils.Age == 12).Select(s);

В основном я хочу Сборник школ, в котором есть Сборник учеников, в которых совпадает мое выражение

Спасибо!

1 Ответ

0 голосов
/ 28 мая 2018
context.Schools.Where(s => s.Name == "Springfield Elementary" && s.Pupils.Age == 12);

Это не должно быть обязательным для .Select(s) школы, так как это то, что вы запрашиваете.

Это возвращает школы, в которых ученики 12 лет. Но если вы хотите выбрать учеников вместо васнеобходимо:

context.Schools
.Where(s => s.Name == "Springfield Elementary" && s.Pupils.Age == 12)
.Select(s=>s.Pupils);

Или, как следует из комментариев, запрашивающих учеников вместо

context.Pupils.Where(s => s.Age == 12 && s.School.Name == "Springfield Elementary");

Это предполагает, что Schools / Pupil выглядит примерно так (POCO в коде):

public class School
{ 
    public int SchoolId { get; set; }
    public string Name { get; set; }

    public virtual ICollection<Pupil> Pupils { get; set; }
}

public class Pupil
{ 
    public int PupilId { get; set; }

    public int Age { get; set; }

    public int SchoolId { get; set; }
    public virtual School School { get; set; }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...