首页 > 解决方案 > 如何在 C# 中编写 LINQ 查询行号?

问题描述

SQL:

Select top percent a,b,ROW_NUMBER() over(PARTITION BY a,b order by a,b) as rowsnumber
from Students as s
group by a,b

林克:

var students=from p in Students
group p by new{p.a,p.b} into grp
order by grp.Key.a,grp.Key.b
.Select(s=>s.a,s.b).ToList();

我想将此 SQL 查询转换为 LINQ 但不转换。

标签: c#linq

解决方案


我将您的 sql 查询转换为 lambda。

   var students = context.GroupBy(g => new { g.A, g.B }).Select((s, index) => new {
        s.Key.A,
        s.Key.B,
        rowsnumber = index + 1
    }).Take(10).ToList();

Group by 的工作方式类似于 partition by。
索引从 0 开始,所以转换为行号需要加
1。Take 是选择 TOP 10 行。


推荐阅读