加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 08:43:19 所属栏目:百科 来源:网络整理
导读:假设我有一个IQueryable,它将返回一个带有ID属性(列)的数据类型. 我想进一步过滤我的查询(我不想评估查询),如下所示: 对于主查询中的每个唯一ID,我想要Take(n),其中n是某个任意数字. 也就是说,我想只保留每个唯一ID的前n行. 我可以得到不同的ID …… var id
假设我有一个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,并将结果放回一个平面列表中.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读