IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Lambda Expressions code ? [Débutant]


Sujet :

C#

  1. #1
    Membre averti
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Janvier 2011
    Messages
    456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2011
    Messages : 456
    Points : 384
    Points
    384
    Par défaut Lambda Expressions code ?
    Bonjour

    J'ai vu sur le net le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    int[] source = new[] { 3, 8, 4, 6, 1, 7, 9, 2, 4, 8 };
     
    foreach (int i in source.Where(
            x =>
            {
                if (x <= 3)
                    return true;
                else if (x >= 7)
                    return true;
                return false;
            }
        ))
        Console.WriteLine(i);
    Mais sur le VS 2010 , on peut pas écrire car i étant une variable local dans , alors qu'est ce qu'on doit faire?
    Reference: http://blogs.msdn.com/b/ericwhite/ar...pressions.aspx

    Si on veut prendre les nombres paires d'un liste par lambda expression :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    int[] scores = { 90, 71, 82, 93, 75, 82 };
                var nb = scores.Where(n => n % 2 == 0);
    Qu'est-ce-qu'il faut mettre le type du nb au lieu var ??


    Merci

  2. #2
    Membre chevronné
    Avatar de Sehnsucht
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2008
    Messages
    847
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Octobre 2008
    Messages : 847
    Points : 2 209
    Points
    2 209
    Par défaut
    Personnellement je n'ai pas compris grand chose, il va falloir faire un effort sur l'écriture et mieux expliquer le problème en attendant je vais tenter 2-3 choses au cas où

    Le code tel que présenté fonctionne très bien, on pourrait éviter d'utiliser une lambda multiligne en "liant" les conditions du if avec un OU (||) mais sinon ça fonctionne parfaitement.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    foreach (int i in source.Where (x => x <= 3 || x >= 7))
        Console.WriteLine (i);
    Il n'existe aucun problème à utiliser "i" dans ce code, il pourrait y avoir un si "i" était capturée par la lambda dans une closure (et encore il me semble que ça a été changé ça, mais peut-être pas sur VS2010) ; quoi qu'il en soit i n'étant utilisé que dans la boucle (donc d'une manière "classique") il n'y a aucun problème.

    Enfin dans l'expression var nb = scores.Where(n => n % 2 == 0); si jamais on voulait typer explicitement nb (plutôt que d'utiliser var et laisser faire l'inférence de types), il faudrait alors utiliser: IEnumerable<int>.
    Nous sommes tous plus ou moins geek : ce qui est inutile nous est parfaitement indispensable ( © Celira )
    À quelle heure dormez-vous ?
    Censément, quelqu'un de sensé est censé s'exprimer sensément.

  3. #3
    Membre averti
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Janvier 2011
    Messages
    456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2011
    Messages : 456
    Points : 384
    Points
    384
    Par défaut
    merci bien

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Lambda expression et pseudo reflection
    Par zax-tfh dans le forum VB.NET
    Réponses: 0
    Dernier message: 28/10/2010, 15h21
  2. Réponses: 3
    Dernier message: 26/05/2010, 11h30
  3. lambda expression et gridview
    Par topolino dans le forum ASP.NET
    Réponses: 5
    Dernier message: 04/03/2010, 13h18
  4. Je n'arrive pas à utiliser les Lambda Expressions
    Par Tiber_le_vrai dans le forum C#
    Réponses: 7
    Dernier message: 21/12/2009, 14h41
  5. [Lambda]Problèmes avec les lambdas expressions
    Par sarapis dans le forum Général Dotnet
    Réponses: 8
    Dernier message: 25/06/2008, 13h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo