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 :

C# : Utilisation d'une autre fonction que FirstOrDefault


Sujet :

C#

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

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2016
    Messages : 28
    Points : 23
    Points
    23
    Par défaut C# : Utilisation d'une autre fonction que FirstOrDefault
    Bonjour,

    Je commence à apprendre le c# et j'ai une petite question.

    Je parcours deux listes différentes de valeurs (A et B). Je veux insérer les valeurs de A dans la database B.
    Pour se faire, je prends la première valeur de ma liste de A et je regarde si elle est dans B.
    Je le fais via la méthode FirstOrDefault et cela me pose problème.
    En effet, si j'ai des doublons dans B, elle trouvera la première des valeurs et fera un update mais sortira de la liste et n'ira pas plus loin...
    Quelle fonction me permet de continuer à chercher dans la liste pour voir si elle est en doublon dans ma BDD B ??? et comment alors retourner les différentes valeurs qu'elle a trouvé dans B ?


    Merci d'avance pour votre aide

    Mojito à jamais dans mon <3

  2. #2
    Expert éminent
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 153
    Points : 7 403
    Points
    7 403
    Billets dans le blog
    1
    Par défaut
    Euh...

    Pas compris grand chose...

    Je verrais bien une algo du genre :
    Code csharp : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    int j = 0;
    for (i = 0, cpt = A.Length; i < cpt; ++i)
    {
        while (j < B.Length && B[j++] < A[i]) {++j;}
        B.insertAt(j, A[i])
    }

    Mais franchement pas sûr d'avoir compris quelque chose...

    Sinon tu peux regarder du côté de Pop() et Push() en passant par un Stack<T> au lieu d'un List<T>...
    On ne jouit bien que de ce qu’on partage.

  3. #3
    Expert éminent sénior

    Avatar de François DORIN
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2016
    Messages
    2 757
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2016
    Messages : 2 757
    Points : 10 541
    Points
    10 541
    Billets dans le blog
    21
    Par défaut
    Citation Envoyé par mojitodu75 Voir le message
    Je parcours deux listes différentes de valeurs (A et B). Je veux insérer les valeurs de A dans la database B.
    [...]
    En effet, si j'ai des doublons dans B, elle trouvera la première des valeurs et fera un update mais sortira de la liste et n'ira pas plus loin...
    L'énoncé du problème, en plus de ne pas être clair, est contradictoire. Ou bien tu insères tous les éléments de A, et dans ce cas, tu n'as pas de teste à faire, ou bien tu insères l'élément uniquement s'il n'est pas déjà présent dans B, et dans ce cas, qu'il soit présent une fois ou plusieurs n'a pas d'importance.

    Tu parles également d'insertions d'un côté, puis de mise à jour.

    Sinon, si tu cherches l'ensemble des éléments, c'est tout simplement un Where qu'il te faut.
    François DORIN
    Consultant informatique : conception, modélisation, développement (C#/.Net et SQL Server)
    Site internet | Profils Viadéo & LinkedIn
    ---------
    Page de cours : fdorin.developpez.com
    ---------
    N'oubliez pas de consulter la FAQ C# ainsi que les cours et tutoriels

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

    Informations professionnelles :
    Activité : edi

    Informations forums :
    Inscription : Juin 2007
    Messages : 898
    Points : 1 915
    Points
    1 915
    Par défaut
    Quels types de valeurs ? Base de données ou listes en mémoire ? Est-ce-qu'il peut y avoir des valeurs en double dans ta liste B ? Et dans la liste A ? Est-ce-qu'il n'y a pas moyen d'utiliser des structures gèrent intrinsèquement l'unicité (HashSet, colonne avec contrainte d'unicité).

  5. #5
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 198
    Points : 12 774
    Points
    12 774
    Par défaut
    Bonjour,
    De ce que je comprends, tu veux mettre à jour, pour chaque valeur de A (une collection quelconque) toutes les valeurs correspondantes de B (une autre collection quelconque).
    Donc tu fais une recherche dans B (avec Linq ?) en terminant celle-ci par un FirstOrDefault().
    Evidemment cette dernière ne renvoie au mieux qu'un seul élément.
    Supprimes le FirstOrDefault, la (requête Linq ou quoi que ce soit) va te renvoyer une collection (par exemple un List<JeSaisPaQuoi> ) que tu pourras parcourir avec un ForEach.

    Sinon le mieux serait de nous montrer ton code, car effectivement ta demande n'est pas très claire.

    Tatayo.

Discussions similaires

  1. Réponses: 4
    Dernier message: 28/08/2017, 09h26
  2. Réponses: 2
    Dernier message: 20/05/2015, 17h49
  3. [Python 3.X] PyQt4: supprimer un item d'un QListWidget dans une autre fonction que celle où il a été créé
    Par nilslauwers dans le forum Bibliothèques tierces
    Réponses: 16
    Dernier message: 20/05/2015, 12h52
  4. Réponses: 1
    Dernier message: 16/11/2014, 17h46
  5. Réponses: 2
    Dernier message: 11/03/2011, 21h17

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