Comment obtenir d'autres numéros à l'aide de Énumérable.Gamme?
Si Start=0
et Count=10
puis comment faire pour que les autres valeurs à l'aide de Enumerable.Range()
la sortie devrait être comme { 0, 2, 4, 6, 8 }
et si Start=1
et Count=10
puis { 1, 3, 5, 7, 9 }
La valeur continue peut être obtenir comme
var a = Enumerable.Range(0,10).ToList();
mais comment obtenir les autres valeurs?
Thomas Anderson: à l'Aide de "pour" boucle nous pouvons le faire. Mais peut-on faire cela à l'aide de
Les gens ont commencé à la haine
Vos deux exemples, les deux ont des Start=0 et Count=10 - est-ce ce que vous avez prévu?
Il n'y a rien de mal avec le style fonctionnel de la programmation. Moins de lignes de code, moins d'effets secondaires -> moins de bugs.
btw, l' .Sélectionnez(X => X) la partie de votre expression ci-dessus est redondante et peut être supprimé. var a = Énumérable.Gamme(0,10).ToList(); est exactement la même chose.
LINQ
?Les gens ont commencé à la haine
for
/foreach
boucle quand une fois ils ont utilisé LINQ. LINQ est la mode, tout en for
est antique. Donc ils essaient d'utiliser LINQ même for
est beaucoup plus approprié.Vos deux exemples, les deux ont des Start=0 et Count=10 - est-ce ce que vous avez prévu?
Il n'y a rien de mal avec le style fonctionnel de la programmation. Moins de lignes de code, moins d'effets secondaires -> moins de bugs.
btw, l' .Sélectionnez(X => X) la partie de votre expression ci-dessus est redondante et peut être supprimé. var a = Énumérable.Gamme(0,10).ToList(); est exactement la même chose.
OriginalL'auteur Thorin Oakenshield | 2010-11-10
Vous devez vous connecter pour publier un commentaire.
Ce que vous êtes après, ici, n'existe pas dans la BCL pour autant que je suis conscient, donc, vous devez créer votre propre classe statique comme cela afin de réaliser la fonctionnalité requise:
Alors vous pouvez l'utiliser comme ceci où vous le souhaitez:
Vous pouvez également effectuer des requêtes LINQ à l'aide de cette, puisqu'il revient IEnumerable
Donc, si vous voulez, vous pouvez aussi écrire au-dessus de ce genre si vous voulez exclure le numéro 6
J'espère que c'est ce que vous êtes après.
Vous ne pouvez pas avoir cela comme une extension de la méthode sur le
Enumerable
classe directement puisque c'est une classe statique, et l'extension des méthodes de travail sur un objet d'une classe, et non pas la classe elle-même. C'est pourquoi, vous devez créer une nouvelle classe statique pour tenir cette méthode si vous voulez imiter leEnumerable
classe.Cette solution n'est pas aussi bon que leppie ou abatishchev qui est en dessous.
OriginalL'auteur Øyvind Bråthen
Réduire de moitié le nombre d'éléments qui doivent générer (second paramètre) et le fait de doubler les valeurs obtenues donnera à la fois le bon nombre d'éléments et d'assurer un incrément de 2.
Je ne sais pas ce que je pensais! Mon downvote a été verrouillé jusqu'à ce que la réponse a été édité, donc j'ai ajouté une explication pour que je puisse la renverser. Mes excuses!
Des numéros impairs: Énumérable.Range(1, 5).Sélectionnez(x => x*2 - 1)
OriginalL'auteur leppie
OriginalL'auteur abatishchev
La
count
paramètre dans votre code ressemble à unend
point de la boucle.Utilisation:
MyExt.Range(1, 10, x => x + 2)
renvoie un nombre entre 1 et 10 à l'étape 2MyExt.Range(2, 1000, x => x * 2)
renvoie un nombre entre 2 à 1000 multiplier de 2 à chaque fois.x crée une collection infinie, cependant vous pouvez toujours le faire fonctionner avec
.First
.Take
.Skip
et etc. L'énumération d'une collection infinie, sansbreak
condition rend le programme accrocher, mais c'est un résultat attendu, tout commewhile (true)
.OriginalL'auteur Danny Chen