我有一个DataTable
,它有一个结构和数据:
id | inst | name
------------------------
1 | guitar | john
2 | guitar | george
3 | guitar | paul
4 | drums | ringo
5 | drums | pete
我可以通过以下方式检索记录:
IEnumerable <Beatle>...
class Beatle
{
int id;
string inst;
string name;
}
我想获得演奏不同乐器的人的内部顺序。在 MSSQL 中我会使用
SELECT
*
,Row_Number() OVER (PARTITION BY inst ORDER BY id) AS rn
FROM Beatles
这个查询返回
id | inst | name | rn
-----------------------------
1 | guitar | john | 1
2 | guitar | george | 2
3 | guitar | paul | 3
4 | drums | ringo | 1
5 | drums | pete | 2
问题:
我如何在 Linq 中做到这一点?
最佳答案
B"H
我知道这是旧的。但为什么解决方案不简单?
var o = beatles.GroupBy(x => x.inst)
.SelectMany(g =>
g.Select((j, i) => new { j.inst, j.name, rn = i + 1 })
);
关于c# - Linq 中的 Row_number 超过(按 xxx 分区)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48353692/