Csharp/C#教程:Linq仅查询每个唯一ID的前N行分享


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

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

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

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

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

我可以得到不同的ID ……

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

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

 query = query..Take(n); 

接受的答案有效,但对于大表来说速度很慢。 我把这个问题写成了后续行动。

你可以这样做:

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

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

上述就是C#学习教程:Linq仅查询每个唯一ID的前N行分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/953004.html

(0)
上一篇 2021年11月18日
下一篇 2021年11月18日

精彩推荐