"" />

Besoin d'aide au sujet de l'expression " => "

Signaler
Messages postés
2
Date d'inscription
vendredi 29 août 2008
Statut
Membre
Dernière intervention
1 septembre 2008
-
Messages postés
78
Date d'inscription
dimanche 8 mai 2005
Statut
Membre
Dernière intervention
21 mars 2018
-
Bonjour tous le monde,

J'ai récupéré un bout de code C# ASP.NET pour comprendre le fonctionnement des webservices et j'ai trouvé une expression que je n'errive pas à comprendre.

La ligne de code en question :
film ListeFilms.FirstOrDefault(f> f.Id == filmIdInt);

Je n'arrive pas à comprendre à quoi correspond =>

J'ai d'abord cru que c'etait un opérateur C# mais je n'ai rien pu trouver sur msdn. Puis j'ai pensé que c'etait un opérateur privé (customisé) mais je n'ai pas pi trouver sa définition dans les sources que j'ai téléchargé.

Est-ce que quelqu'un pourrait-il m'aidre à ce sujet.

Merci d'avance,
MiiiZ

5 réponses

Messages postés
78
Date d'inscription
dimanche 8 mai 2005
Statut
Membre
Dernière intervention
21 mars 2018
1
Se sont les Lambda Expressions, Tu dois lire un peu de bookins sur le sujet des expressions lambda et LINQ,
Pour le code tu peux le lire comme ça:
var film ListeFilms.FirstOrDefault(f> f.Id == filmIdInt);
// film est un Type Anonyme recevant le résultat d'une fonction FirstOrDefault d'une classe LinqToSQL ou d'une collection (ou liste) s'appelant ListeFilms

La fonction reçoit comme parametre le critère de recherche,
f => f.Id == filmIdInt : veut dir
La fonction FirstOrDefault effectue une recherche sur tous les objets (on les appelle f) de la collection ListeFilms tel que :
l'Id de l'objet f de la collection ListeFilms doit être égale au critère filmIdInt (Variable dont la valeur est a indiquer) et retourne le premier objet obtenu ou la valeur par défaut s'il n y a pas de résultat.
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
45
Un peu de code pour que ce soit éventuellement plus clair:
film ListeFilms.FirstOrDefault(f> f.Id == filmIdInt);

= (environ)

Film film = GetFilm(myId);

public Film GetFilm(int myId)
{
   foreach(Film f in _films)
   {
      if(f.Id == myId) return f;
   }
   return null;
}

<hr />-My Blog-
Messages postés
883
Date d'inscription
vendredi 3 novembre 2000
Statut
Membre
Dernière intervention
3 mars 2009
6
A mon tour :-) (Je l'explique un peu autrement)

Cet opérateur sert à créer une fonction et a exactement la même fonction lorsqu'il est utilisé en mathématique où l'on écrira par exemple

f : x => 3x + 5

Qui se lit, "soit f une fonction qui associe à x, 3x + 5"...

Dans notre cas, "f => f.Id == filmIdInt" peut se lire, "soit une fonction qui associe à f (élément de ListFilms) le booléen f.Id == filmIdInt"

Ensuite, comme on peut le deviner, FirstOrDefault renverra le premier élément f de ListFilms pour lequel "f.Id == filmIdInt" est vérifié, ou bien la valeur par défaut du type f s'il n'en trouve aucun...

<hr size="2" width="100%" />Julien.
Messages postés
2
Date d'inscription
vendredi 29 août 2008
Statut
Membre
Dernière intervention
1 septembre 2008

Ennorme merci a tous. C'etait très intéressant de comprendre comment ca marche. Ca me donne surtout une bonne piste pour continuer mon apprentissage.

Encore merci
Messages postés
78
Date d'inscription
dimanche 8 mai 2005
Statut
Membre
Dernière intervention
21 mars 2018
1
Salut Julien

Ta méthode est plus claire
Merci
Pour Miiiz, Au moins accepte une réponse pour aider les autres membres.