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

时间:2018-09-09 19:39:40

标签: c# .net linq generator distinct

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

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

  1. 接受n项
  2. 呼叫不同
  3. 通话次数
  4. 如果计数
  5. 取n-计数项目
  6. 将它们合并并转到2
  • 结束
  • 1 个答案:

    答案 0 :(得分:6)

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

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