自定义选择实体框架

时间:2019-10-20 20:27:59

标签: sql asp.net-mvc entity-framework

我想使用Entity Framwork执行自定义选择,但做得不好,您是否可以帮助我使用Entity Framework来确定此SQL选择

SELECT DISTINCT
   Departments.Dept_ID, Departments.Name_Ar 'dept',
   Request_Status.Name_Ar 'Status',
   COUNT(Job_Requests.Status_ID) 'StatusCount'
FROM     
   dbo.Job_Requests 
INNER JOIN
   dbo.Jobs ON dbo.Job_Requests.Job_ID = dbo.Jobs.Job_ID 
INNER JOIN
   dbo.Departments ON dbo.Jobs.Dept_ID = dbo.Departments.Dept_ID 
INNER JOIN
   dbo.Job_Announcements ON dbo.Job_Announcements.JobAnnouncement_ID = dbo.Jobs.JobAnnouncement_ID 
INNER JOIN
   dbo.Request_Status ON dbo.Job_Requests.Status_ID = dbo.Request_Status.Status_ID
WHERE  
   [Job_Requests].[Is_Active] = 1 
   AND Job_Announcements.JobAnnouncement_ID = 14

1 个答案:

答案 0 :(得分:2)

基于上述查询,我​​已经准备好一些示例。

  

首先,您需要创建两个用于检索数据的类

  • DepartmentModel用于选择特定数据
  • DepartmentStatus,了解您实际想要的内容。
  

模型类

    public class DepartmentModel
    {
        public int Dept_ID {get;set;}
        public string dept {get;set;}
        public string Status {get;set;}
        public int Status_ID {get;set;}
    }

    public class DepartmentStatus
    {   
        public int Dept_ID {get;set;}
        public string dept {get;set;}
        public string Status {get;set;}
        public int StatusCount {get;set;}
    }
  

实体框架查询

var CustomeSelect = from Job_Requests in _entityFrameworkContext.Job_Requests
JOIN Jobs in _entityFrameworkContext.Jobs ON  Job_Requests.Job_ID = Jobs.Job_ID 
JOIN Departments in _entityFrameworkContext.Departments ON Jobs.Dept_ID = Departments.Dept_ID
JOIN Job_Announcements in _entityFrameworkContext.Job_Announcements  ON Job_Announcements.JobAnnouncement_ID 
= Jobs.JobAnnouncement_ID 
JOIN Request_Status in _entityFrameworkContext.Request_Status ON Job_Requests.Status_ID = Request_Status.Status_ID
select new DepartmentModel 
{
    Dept_ID = Departments.Dept_ID,
    dept=Departments.Name_Ar,
    Status = Request_Status.Name_Ar,
    Status_ID = Job_Requests.Status_ID
}
where  Job_Requests.Is_Active = true && Job_Announcements.JobAnnouncement_ID = 14

var oResult = CustomeSelect.GroupBy(s => new
        {
            s.Dept_ID,
            s.dept,
            s.Status,
        })
        .Select(ds => new DepartmentStatus()
        {
            Dept_ID = ds.Key.Dept_ID,
            dept = ds.Key.dept,
            Status = ds.Key.dept,
            StatusCount = ds.Count(),
        });