繁体   English   中英

轻松的LINQ方式从(无限)IEnumerable中获取n个不同的项目

[英]Easy LINQ-way to take n distinct items from an (infinite) IEnumerable

我有一个类似生成器的无限IEnumerable源,我想从中获取n个不同的项。 有没有一种简单的LINQ风格的方法(仍然很快速)?

如果没有简单的方法,我提出的算法是否是个好主意?:

  1. 取n项
  2. 呼叫区别
  3. 通话次数
  4. 如果计数<n
    1. 取n-计数项
    2. Concat这些和goto 2
  5. 结束

只需在Take之前调用Distinct即可获取n个不同的元素:

var nDistincItems = source
    .Distinct()
    .Take(n);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM