Выберите мастер на основе деталей в LINQ
У меня есть таблица ServiceRequest, где она содержит поле для указания местоположения (филиала) и тип поддержки (проблема ИТ, проблема парка, обслуживание...)
ServiceRequest: { srID(PK), srDetail, LocationID(FK), SupportID(FK), StatusID(FK), ServiceDate }
затем у меня есть таблица Supervisor, где она определяет список местоположений и тип проблем, которыми он руководит:
Supervisor: { UserID(FK), LocationID(FK), SupportID(FK) }
какой запрос я могу использовать, поэтому при входе супервизора я хочу показать ему все запросы на обслуживание, относящиеся к расположениям, и типы поддержки, которые он охватывает.
В настоящее время я получаю все (активные) запросы на обслуживание, используя:
short statusId = short.Parse(ddlStatus.Value);
return db.ServiceRequests.Where(sr => sr.StatusID == statusId)
.OrderByDescending(s=>s.ServiceDate).ToList();
1 ответ
Вы можете попробовать это
short statusId = short.Parse(ddlStatus.Value);
int userId= 1;// keep supervisor Id
var serviceRequest = (from e in db.Supervisor where e.UserID==userId
join f in db.ServiceRequests on new {e.LocationID, e.SupportID}
equals new {f.LocationID, f.SupportID}
where f.StatusID == statusId
select f
).OrderByDescending(s=>s.ServiceDate).ToList();
return serviceRequest ;