Linq 中的 Row_number 超过(按 xxx 分区)? [英] Row_number over (Partition by xxx) in Linq?
本文介绍了Linq 中的 Row_number 超过(按 xxx 分区)?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个DataTable
,它有一个结构和数据:
I have a DataTable
which has a structure and data:
id | inst | name
------------------------
1 | guitar | john
2 | guitar | george
3 | guitar | paul
4 | drums | ringo
5 | drums | pete
我可以通过以下方式检索记录:
I can retrieve the records via:
IEnumerable <Beatle>...
class Beatle
{
int id;
string inst;
string name;
}
我想了解演奏不同乐器的人的内部顺序.在 MSSQL 中我会使用
I'd like to get the internal order of those who play the different instruments. In MSSQL I'd use
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
我知道这是旧的.但为什么解决方案不简单?
I know this is old. But why isn't the solution simply?
var o = beatles.GroupBy(x => x.inst)
.SelectMany(g =>
g.Select((j, i) => new { j.inst, j.name, rn = i + 1 })
);
这篇关于Linq 中的 Row_number 超过(按 xxx 分区)?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文