我做了一个生成奇数的函数:

static IEnumerable<int> OddNumbers()
{
  int n = 1;
  while (true)
    yield return 1 + 2 * (n++ - 1);
}


如何查看和过滤此列表?我试图删除某个数字factor的所有倍数,我这样写:

using (var oddNumbers = OddNumbers().GetEnumerator())
{
  oddNumbers.MoveNext();
  int factor = oddNumbers.Current;

  yield return factor;
  oddNumbers = oddNumbers.Where(x => x % factor != 0);
}


但我被告知

The type arguments for method `System.Linq.Enumerable.Where<TSource>(
  this System.Collections.Generic.IEnumerable<TSource>,
  System.Func<TSource,bool>)' cannot be inferred from the usage.
Try specifying the type arguments explicitly`

最佳答案

据我了解,不需要直接访问该枚举器,可以单独使用Linq进行以下操作。

var FilteredNumbers = OddNumbers().Where(x => x % factor != 0);

关于c# - 过滤IEnumerable…。在哪里?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40653895/

10-13 06:28