Linq/lambda question à propos de .Sélectionnez (newby apprentissage 3.0)
Je suis à jouer avec les nouveautés de C#3.0 et j'ai ce code (pour la plupart tirés de MSDN) mais je ne peut obtenir de vrai,faux,vrai... et non pas la valeur réelle :
int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };
var oddNumbers = numbers.Select(n => n % 2 == 1);
Console.WriteLine("Numbers < 5:");
foreach (var x in oddNumbers)
{
Console.WriteLine(x);
}
Comment puis-je régler ce problème pour afficher la liste des entiers?
Semble n % 2 == 1 n'a rien à voir avec les Numéros de < 5?
OriginalL'auteur Patrick Desjardins | 2008-10-28
Vous devez vous connecter pour publier un commentaire.
Changer votre "Select" pour un "Où"
"Sélectionner" la méthode est la création d'une nouvelle liste de la lambda, pour chaque élément (vrai/faux). Le "Où" la méthode est le filtrage basé sur le lambda.
En C#, vous pouvez également utiliser cette syntaxe, vous pouvez trouver plus claire:
qui le compilateur se traduit par:
Il ne sélectionner des données. C'est en sélectionnant le résultat de votre lambda - qui est une valeur booléenne.
thx!! Je comprends maintenant.
Juste pour vous informer que var oddNumbers = nombres.Où(n => n % 2 == 1).Sélectionnez(n); ne fonctionne pas.
Je vois ce que tu veux dire, vous faisiez allusion à ma tentative d'un compilateur traduction exemple. J'ai corrigé, mais je ne veux pas dire pour vous à utiliser. Juste la première réponse que j'ai donné (qui a compilé). var oddNumbers = nombres.Où(n => n % 2 == 1);
OriginalL'auteur TheSoftwareJedi
De changer cela pour
Sélectionnez ce n'est de "convertir" une chose à l'autre. Donc dans ce cas, c'est la "Conversion" n "n % 2 == 1" (qui est un booléen) - donc, vous obtenez tous les vrais et les falses.
Il est habituellement utilisé pour obtenir les propriétés sur les choses. Par exemple si vous avez une liste de
Person
objets, et que vous vouliez obtenir leurs noms, vous feriezVous pouvez penser de cette façon:
De "sélectionner" (dans le "filtrage" les sens du terme) un sous-ensemble d'une collection, vous devez utiliser Où.
Merci Microsoft pour le terrible de nommage
Ouais, même que SQL, mais différent de tous les autres langages de programmation (ruby, lisp, python, etc, etc) qui utilisent la carte pour "sélectionner" et sélectionner "où"
Thx pour l'information sur les Sélectionner.
... et en F#, "carte" est "Select" et "filtre" est "Où". Très agréable à mon humble avis.
OriginalL'auteur Orion Edwards