根据LINQ中的详细信息选择master

时间:2016-11-23 08:02:28

标签: c# linq master-detail

我有ServiceRequest表,其中包含指定位置(分支)的字段,以及支持的类型(IT问题,车队问题,维护......)

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 个答案:

答案 0 :(得分:3)

你可以试试这个

       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 ;