После некоторого совета о том, как сделать это красиво, используя лямбда-выражения.
Я хочу получить список мест размещения на основе агентства.Я хочу, чтобы места размещения были в том месте, где Place.agency! = Агентство, но где Place.agencypersonnel содержит какой-либо из сотрудников агентства.
Так что, если место размещения не для этого агентства, но есть сотрудники этого агентства, вовлеченные в другое агентстворазмещение агентства
Я не знаю, как запросить на основе второго условия.
Так что-то вроде:
// agency is being passed in
var agencySupervisors = agency.AgencyPersonnel;
return agency.Placements
.Where(p => p.Supervisors.Contains(agencySupervisors))
.Where(p => p.Agency != agency);
Я получаю, что Contains должен ссылаться наотдельный объект, а не коллекция - вот почему он ошибается ... но я не уверен, как заставить его проверять все объекты в коллекции.
Также пробовал Любой
return agency.Placements
.Where(p => agencySupervisors.Any<PlacementSupervisor>(p.Supervisors))
.Where(p => p.Agency != agency);
Так что, надеюсь, просто я использую не тот!
Другой гаечный ключ в работах пытается выяснить, как руководитель размещения и сотрудники агентства связаны друг с другом. Я думаю, что это связано с AgencyPersonnelId = SupervisorId, поэтому я предполагаю, что это также должно бытьв мое выражение.
Спасибо!
Редактировать: Как мне обрабатывать, если типы объектов в списке не совпадают - но я знаю, что идентификатор будетматч.Должен ли я написать компаратор и каким-то образом включить это в выражение?то есть.AgencyPersonnelId = SupervisorId
Я пытался:
return placements
.Where(p => p.Supervisors.Any(supervisor => agencySupervisors.Any(ap => ap.AgencyPersonnelId == supervisor.SupervisorId)));
Но это не дает мне никаких результатов, поэтому это явно неправильно.
Редактировать: На самом делекогда я пытаюсь перебрать места размещения в возвращенной коллекции, я получаю исключение нулевой ссылки - поэтому я не уверен, связано ли это с моим выражением или с тем, как я возвращаю результаты.