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

假设我有一个IQueryable,它将返回一个带有ID属性(列)的数据类型.

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

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

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

我可以得到不同的ID ……

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

我可以和其他人一起拿走(n),但我很难将两者联系起来:

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

接受的答案有效,但对于大表来说速度很慢.我写了this question作为后续行动.

解决方法

你可以这样做:
query = query.GroupBy(q => q.ID).SelectMany(g => g.Take(n));

GroupBy将具有相同ID的记录汇集在一起​​,让您将它们作为一个组进行处理; SelectMany获取每个组,将其成员数限制为n,并将结果放回一个平面列表中.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


c语言数组越界会怎么样
c语言指针怎么等于数组
c语言数组怎么存入文字
c语言中怎么显示数组
c语言数组元素怎么选
c语言数组怎么累加
c语言数组符号怎么输入
c语言怎么用长数组
c语言数组函数怎么输入
c语言数组怎么去掉差异
c语言怎么求解数组
c语言数组怎么用变量
c语言怎么申明数组
c语言怎么控制数组
c语言怎么计算数组长度
c语言数组怎么插星号
c语言数组怎么加长度
c语言中怎么输出数组
c语言怎么记住数组边界
c语言数组怎么输入符号