我做了一个生成奇数的函数:
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/