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

MiiiZ Messages postés 2 Date d'inscription vendredi 29 août 2008 Statut Membre Dernière intervention 1 septembre 2008 - 29 août 2008 à 17:37
cs_boutemine Messages postés 78 Date d'inscription dimanche 8 mai 2005 Statut Membre Dernière intervention 21 mars 2018 - 1 sept. 2008 à 15:59
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

cs_boutemine Messages postés 78 Date d'inscription dimanche 8 mai 2005 Statut Membre Dernière intervention 21 mars 2018 2
29 août 2008 à 21:42
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.
0
cs_Bidou Messages postés 5486 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
31 août 2008 à 21:57
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-
0
Julien237 Messages postés 883 Date d'inscription vendredi 3 novembre 2000 Statut Membre Dernière intervention 3 mars 2009 7
1 sept. 2008 à 00:27
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.
0
MiiiZ Messages postés 2 Date d'inscription vendredi 29 août 2008 Statut Membre Dernière intervention 1 septembre 2008
1 sept. 2008 à 01:00
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_boutemine Messages postés 78 Date d'inscription dimanche 8 mai 2005 Statut Membre Dernière intervention 21 mars 2018 2
1 sept. 2008 à 15:59
Salut Julien

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