回答

收藏

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

技术问答 技术问答 270 人阅读 | 0 人回复 | 2023-09-13

说我有一个IQueryable将返回带有ID属性(列)的数据类型。! B- q% {0 d6 Z
我想进一步过滤查询( 我不想评估查询 ),如下所示:
$ P# j% d. n2 x: C% C5 K对于ID主查询中的每个唯一值,我想要Take(n),其中n是一些任意数字。
5 [) t* o# ?" S. i! v+ g; X7 l7 \也就是说,我只想保留n每个唯一ID的第一行。9 A5 s8 l; R. l# y2 Z: C
我可以得到与众不同ID的…
  _- q3 g  B. B5 @: i$ [. Dvar ids = query.Select(q => q.ID).Distinct();! @) A2 a# P- x7 O) N4 K. J
我可以Take(n)与其他人一起使用,但我为将两者连接而感到困惑:3 h2 G9 ~" H9 }* s3 l! @
query = query..Take(n);- T2 A# B! v5 i% x( P- l; {: b
               
2 E* t9 z8 }( Q. O* R解决方案:0 D) t9 R/ b) q1 @6 U/ ?5 }8 ?- J
               
, z$ ?* N: A$ [3 ?( l* J4 ~' b, \# \  [/ Q  l0 a( Q$ t6 Z

5 L( S0 J! y8 A+ A$ e                您可以这样做:- k; J2 C) x5 \) u% l+ u1 Y: Z
query = query.GroupBy(q => q.ID).SelectMany(g => g.Take(n));3 d3 [' X* h! ~% ~
将GroupBy具有相同IDs的记录汇总在一起,使您可以将它们作为一个组进行处理;SelectMany接受每个组,将其成员数限制为n,然后将结果放回到一个统一列表中。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则