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

问题描述 投票:2回答:1

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

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

  1. 拿n项
  2. 打电话不同
  3. 通话计数
  4. 如果计数<n 拿n - 计数项目 Concat那些和转到2
  5. 结束
c# .net linq generator distinct
1个回答
6
投票

Distinct之前调用Take来获取n个不同的元素:

var nDistincItems = source
    .Distinct()
    .Take(n);
© www.soinside.com 2019 - 2024. All rights reserved.