Выберите мастер на основе деталей в 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 ;
Другие вопросы по тегам