J'ai fait une fonction pour générer les nombres impairs:Filtre sur IEnumerable ... .Où?
static IEnumerable<int> OddNumbers()
{
int n = 1;
while (true)
yield return 1 + 2 * (n++ - 1);
}
Comment puis-je aller à travers et filtrer cette liste? Je suis en train de supprimer tous les multiples d'un certain nombre factor
, je l'ai écrit ceci:
using (var oddNumbers = OddNumbers().GetEnumerator())
{
oddNumbers.MoveNext();
int factor = oddNumbers.Current;
yield return factor;
oddNumbers = oddNumbers.Where(x => x % factor != 0);
}
mais on me dit que
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`
Declare 'oddNumbers' comme:' IEnumerable oddNumbers = OddNumbers(); '. Ensuite, utilisez une autre variable dans 'using 'pour l'énumérateur. –
'oddNumbers' est un' IEnumerator 'mais' Where' nécessite un 'IEnumerable '. Vous pouvez simplement utiliser 'OddNumbers(). Où (x => x% factor! = 0)'. –
Lee
Euh ... toutes ces opérations semblent scary infinies ... – Nyerguds