小编典典

Linq查询每个唯一ID的前N行

sql

说我有一个IQueryable将返回带有ID属性(列)的数据类型。

我想进一步过滤查询( 我不想评估查询 ),如下所示:

对于ID主查询中的每个唯一值,我想要Take(n),其中n是一些任意数字。

也就是说,我只想保留n每个唯一ID的第一行。

我可以得到与众不同ID的…

var ids = query.Select(q => q.ID).Distinct();

我可以Take(n)与其他人一起使用,但我为将两者连接而感到困惑:

query = query.<FOR EACH DISTINCT ID>.Take(n);

阅读 177

收藏
2021-04-22

共1个答案

小编典典

您可以这样做:

query = query.GroupBy(q => q.ID).SelectMany(g => g.Take(n));

GroupBy具有相同IDs的记录汇总在一起,使您可以将它们作为一个组进行处理;SelectMany接受每个组,将其成员数限制为n,然后将结果放回到一个统一列表中。

2021-04-22