正在生成带有EF中分区的ROW_NUMBER()



我在T-SQL中有一个查询,其中包含按子句划分的查询,基于生成的ROWNumber,我想提取两件事:

  1. 具有多个记录的结果(可能取自parion子句中的最新记录(
  2. 从上述点(点#1(提取第一条记录

这是我的T-SQL查询,我想将其转换为EF:

select * from 
(
select StudentId, ProgramId, StudentProgramTaggingId, 
ROW_NUMBER() OVER(Partition By StudentId, ProgramId order by StudentProgramTaggingId) as RowNum 
from MahadStudentProgramHistory
group by StudentId, ProgramId, 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代码跳过重复项提取所有记录,但我想要相反的结果,我想从重复项中获得第一条记录,并忽略所有单订单。

我试过这段代码,它能正常工作。也许你不想使用这个,因为ToList函数。

var studentPrograms = db.StudentProgramHistories
.ToList() // this may slow
.Select((s, i) => new { Row = s, Idx = i + 1 })
.Where(w => w.Idx > 1)
.Select(s => s.Row)
.ToList();

相关内容

  • 没有找到相关文章

最新更新