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 :

Pointer dans une liste & passer à la valeur suivante


Sujet :

C#

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    juin 2016
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : juin 2016
    Messages : 26
    Points : 21
    Points
    21
    Par défaut Pointer dans une liste & passer à la valeur suivante
    Bonjour le forum !

    Je bloque sur un petit point aujourd'hui.

    Je l'explique par un exemple simple :

    Je vais avoir une liste de voitures que je récupère en mémoire dans mon code avec 3 infos : Pays / Marque / DateDeSortie

    Exemple du format de la liste :

    {
    Pays : France,
    Marque : Renault,
    DateDeSortie : 20/01/2010
    }
    ,
    {
    Pays : Allemagne,
    Marque : Mercedes,
    DateDeSortie : 25/10/2001
    }
    ,
    {
    Pays : France,
    Marque : Peugeot,
    DateDeSortie : 25/07/2021
    }


    Je cherche a récupérer la dateDeSortie la plus récente des voitures Francaises.

    Comment je fais pour parcourir ma liste et passer à la valeur suivante une fois que j'ai trouvé une première fois dans ma liste, une voiture francaise, sans pour autant parcourir toute la liste ?


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    string PaysTosearch = "France"
    FranceToFind = ListAutomobileDateMiseEnCirculation.FirstOrDefault(p => p.Pays == PaysTosearch ); // On recherche si on trouve une voiture avec le pays france dans notre liste et je retourne la premiere valeur trouvé
    Je pense qu'il faut que je remplace "FirstOrDefault" par autre chose ...
    Des idées ?

    Merci pour votre aide !

  2. #2
    Membre chevronné
    Avatar de PixelJuice
    Homme Profil pro
    Ingénieur .NET & Game Designer
    Inscrit en
    janvier 2014
    Messages
    534
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Ingénieur .NET & Game Designer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : janvier 2014
    Messages : 534
    Points : 1 839
    Points
    1 839
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FranceToFind = ListAutomobileDateMiseEnCirculation.Where(p => p.Pays == PaysTosearch).OrderBy(p => p.DateDeSortie).FirstOfDefault();
    On filtre par pays, ensuite on tri par date, et on prend simplement le premier.

    Après selon la taille de ta liste et de tes besoins, il est possible d'optimiser plus ou moins cette opération.
    Keep calm and debug it

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    juin 2016
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : juin 2016
    Messages : 26
    Points : 21
    Points
    21
    Par défaut
    Bonjour Pixel,

    Merci pour ton retour rapide.

    Ok pour le "Where" pour filtrer sur la france, mais imaginons j'ai 10 valeurs différentes dans ma liste avec 10 dates de sortie et ce que je veux sortir c'est le maillon de la liste ou la date de sortie est la plus récente.

    Donc pour par exemple mon exemple au dessus, je devrais retrouver en sortie de FranceToFind -->

    {
    Pays : France,
    Marque : Peugeot,
    DateDeSortie : 25/07/2021
    }

    La j'ai l'impression qu'avec ta méthode ca me sortira le premier qui trouve france dans ma liste non ?

    Merci

    Mojito FOREVER

  4. #4
    Membre chevronné
    Avatar de PixelJuice
    Homme Profil pro
    Ingénieur .NET & Game Designer
    Inscrit en
    janvier 2014
    Messages
    534
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Ingénieur .NET & Game Designer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : janvier 2014
    Messages : 534
    Points : 1 839
    Points
    1 839
    Par défaut
    Et bien mauvaise impression . Si tu regardes la méthode Where, elle renvoie une collection d'objets, les véhicules français, qu'on va trier par date, et logiquement, le premier élément sera donc la plus récente.

    D'ailleurs j'ai fait une erreur, c'est pas OrderByDescending mais OrderBy tout court. (j'ai corrigé dans mon message)
    Keep calm and debug it

  5. #5
    Membre chevronné
    Homme Profil pro
    edi
    Inscrit en
    juin 2007
    Messages
    858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : edi

    Informations forums :
    Inscription : juin 2007
    Messages : 858
    Points : 1 831
    Points
    1 831
    Par défaut
    Citation Envoyé par PixelJuice Voir le message
    Et bien mauvaise impression . Si tu regardes la méthode Where, elle renvoie une collection d'objets, les véhicules français, qu'on va trier par date, et logiquement, le premier élément sera donc la plus récente.

    D'ailleurs j'ai fait une erreur, c'est pas OrderByDescending mais OrderBy tout court. (j'ai corrigé dans mon message)
    Mais si tu ordonnes par date de sortie croissante, c'est la valeur la plus basse, c'est-à-dire la plus ancienne, qui sortira en premier ; or c'est la plus récente, c'est-à-dire la valeur la plus élevée, qu'il veut !

  6. #6
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    juin 2016
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : juin 2016
    Messages : 26
    Points : 21
    Points
    21
    Par défaut
    Hello,

    Je suis en train de faire mes tests pour intégrer ça. Je vous dis quand c'est fait

    Et si par exemple je veux récupérer une ou plusieurs de ces valeurs ?
    C'est possible de passer à la "next to find" ?

    Merci

Discussions similaires

  1. Réponses: 0
    Dernier message: 13/03/2020, 11h15
  2. Réponses: 26
    Dernier message: 29/08/2017, 15h06
  3. [Python 3.X] Loop dans une liste et récupérer la valeur
    Par Alex3466 dans le forum Général Python
    Réponses: 3
    Dernier message: 21/08/2017, 00h37
  4. Réponses: 3
    Dernier message: 08/01/2016, 19h57
  5. Réponses: 3
    Dernier message: 20/11/2014, 22h36

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