我在linq-to-entities中有以下内容。
我想修改此查询,仅获取每个SAP_Master_Project中最新更新日期的SAP_Master_ProjectPartners记录。如何实现此操作?
编辑:
有一个项目表,其中包含项目编号和项目详细信息,包括项目开始和结束日期。有一个项目合作伙伴表,其中包括项目合作伙伴编号、名称、项目编号、更新日期和其他详细信息。
SAP_MASTER_PROJECT
项目编号
开始时间
结束时间
SAP_MASTER_PROJECTPARTNERS
合作伙伴编号
项目编号
合作伙伴名称
城市
地区
更新日期
当用户在文本框中输入“ABC”时,我要返回的信息是最近50个项目(基于开始日期),其中包含或类似于“ABC”的项目合作伙伴名称的项目编号、项目开始日期、项目结束日期以及来自最后一个项目合作伙伴记录的项目合作伙伴名称、城市和州。
我相信有多种方法可以做到这一点,但是这个SQL语句给我提供了所需的结果:
clientprojects = (from p in this.SAPMappingEntities.SAP_Master_Projects
join c in this.SAPMappingEntities.SAP_Master_ProjectPartners on c.project_no equals p.project_no
where c.partner_name.Contains(clientstring)
orderby p.start descending
select new ClientProjects { client = c.partner_name, location = c.city +", "+c.region, project_no = c.project_no, start_dt = p.start, end_dt = p.finish }).Take(50).ToList();
我想修改此查询,仅获取每个SAP_Master_Project中最新更新日期的SAP_Master_ProjectPartners记录。如何实现此操作?
编辑:
有一个项目表,其中包含项目编号和项目详细信息,包括项目开始和结束日期。有一个项目合作伙伴表,其中包括项目合作伙伴编号、名称、项目编号、更新日期和其他详细信息。
SAP_MASTER_PROJECT
项目编号
开始时间
结束时间
SAP_MASTER_PROJECTPARTNERS
合作伙伴编号
项目编号
合作伙伴名称
城市
地区
更新日期
当用户在文本框中输入“ABC”时,我要返回的信息是最近50个项目(基于开始日期),其中包含或类似于“ABC”的项目合作伙伴名称的项目编号、项目开始日期、项目结束日期以及来自最后一个项目合作伙伴记录的项目合作伙伴名称、城市和州。
我相信有多种方法可以做到这一点,但是这个SQL语句给我提供了所需的结果:
SELECT TOP 50 p.project_no, p.start, p.finish, c.partner_name, c.city, c.region
FROM
(select pp.project_no, pp.partner_name, pp.city, pp.region
from SAP_Master_ProjectPartners pp
where pp.partner_name LIKE @clientstring AND pp.update_dt = (select max(pp1.update_dt)
from SAP_Master_ProjectPartners pp1
where pp1.project_no = pp.project_no)) c
join SAP_Master_Projects p
on (p.project_no = c.project_no)
ORDER BY p.start DESC
编辑 #2 实际上,这个SQL语句返回了一些具有相同update_dt的项,因此我将其修改为以下内容。仍在努力将其转换为linq。
SELECT TOP 50 p.project_no, p.start, p.finish, c.partner_name, c.city, c.region, c.update_dt, c.row_id
FROM SAP_Master_Projects p
join
(select pp.project_no, pp.partner_name, pp.city, pp.region, pp.update_dt, pp.row_id
from SAP_Master_ProjectPartners pp
where pp.partner_name LIKE @clientstring AND pp.row_id = (select TOP 1 row_id
from SAP_Master_ProjectPartners pp1
where pp1.project_no = pp.project_no order by update_dt DESC)) c
on (p.project_no = c.project_no) where p.active_flag = 1
ORDER BY p.start DESC