我在T-SQL
中有一个查询,该查询包含按子句划分的分区,并且基于生成的ROWNumber,我想进行两件事:
- 结果具有多个记录(可能取自parition子句中的最新记录)
- 从上述点(第1点)拉出第一条记录。
这是我想转换为EF的T-SQL查询:
select * from
(
select StudentId,ProgramId,StudentProgramTaggingId,ROW_NUMber() OVER(Partition By StudentId,ProgramId order by StudentProgramTaggingId) as RowNum
from MahadStudentProgramHistory
group by StudentId,StudentProgramTaggingId
)a where a.RowNum > 1
这是我在EF中尝试获得所需结果的方法:
var studentPrograms = db.StudentProgramHistories;
var groupByStudents = studentPrograms
.GroupBy(x => new
{
x.StudentId,x.ProgramId
})
.Select(x => x.Count() > 1)
.Select(x => x).ToList();
上面的EF代码提取跳过重复记录的所有记录,但是我想相反,我想从重复记录中获取第一条记录,并忽略所有单身的订单。