Я несколько раз встречал людей, спрашивающих об одном и том же вопросе, но кажется, что ответ никогда не был удовлетворительным, хотя это должно быть довольно легко (теоретически).Вот мой вопрос:
У меня есть сущность под названием «Компания», внутри которой у меня есть сущностьКоллекция «Сотрудники» (один ко многим).Мне нужно получить все компании, и для каждой из них мне нужны только сотрудники с возрастом, превышающим 21.
Я пытался:
Return context.Companies.Include("Employees").Where(c => c.Employees.Where(e => e.Age > 21).Count() > 0)
Это не работает, поскольку даетЯ все сотрудники для каждой компании, если есть хотя бы один выше 21 (на самом деле это то же самое, что .Any ())
Я пытался:
Return context.Companies.Include("Employees").Select(c => New Company {
.Id = c.Id,
.Employees = c.Employees.Where(Function(e) e.Age > 24)
}).ToList()
Это тоже не сработало(хотя это было бы идеально), это дает мне следующую ошибку: Сущность или сложный тип 'MyModel.Company' не могут быть созданы в запросе LINQ to Entities.
Как можноВы выбираете все мои компании, в которых для каждой из них работают сотрудники старше 21 года?На данный момент я выбираю все и на стороне клиента я фильтрую своих сотрудников, но мне не нравится это решение.
Кто-нибудь может мне помочь?
Спасибо, Мортеза Манави-Параст, он будет работать!
Тем не менее, я с трудом убеждаю себя, что выполнение в уникальном запросе не реализовано в платформе Entity.Это довольно распространенная ситуация ... Как доказательство, на этом форуме есть множество вопросов, подобных моему.
Я удивлен ... Может быть, для следующего выпуска?
Чтобы было ясно, мне нужен список компаний, поскольку я напрямую связываю результат моего запроса с сеткой данных.Для вашей информации, когда я щелкаю по строке моей таблицы данных (выбирая компанию), у меня появляется вторая таблица, в которую входят ее сотрудники (старше 21 года) из entityCollection.