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 :

Contains entre deux listes


Sujet :

C#

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Novembre 2012
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 46
    Points : 39
    Points
    39
    Par défaut Contains entre deux listes
    Bonjour à tous !

    Je me heurte à un problème,

    J'ai deux listes, list1 et list2 construites de la même façon : List<string[3]>.

    Je voudrai vérifier si un élément de la liste list1 est bien présent dans la liste list2.

    J'ai pensé à faire un simple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    foreach (string[] data in list1)
    {
      if (!(list2.Contains(data))) { ... }
      else { ... }
    }
    Mais la condition de mon if est toujours vérifiée ... Pourtant je suis certain de la validité de mes données ...
    Merci pour votre aide !

  2. #2
    Membre expérimenté
    Avatar de charouel
    Homme Profil pro
    Freelance
    Inscrit en
    Mars 2009
    Messages
    618
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : Mars 2009
    Messages : 618
    Points : 1 454
    Points
    1 454
    Billets dans le blog
    9
    Par défaut
    voila un cours sur les liste

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Novembre 2012
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 46
    Points : 39
    Points
    39
    Par défaut
    Salut,

    Ne trouvant pas de réponse précise sur le net, j'ai tout simplement codé une méthode qui fait très bien le boulot.

    Merci quand même.

  4. #4
    Membre à l'essai
    Femme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2013
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2013
    Messages : 19
    Points : 16
    Points
    16
    Par défaut
    J'ai fait avec deux IEnumerable :
    Je cherche meme nom mobile dans deux list de deux reseaux mobileOP1s et mobileOP2s. Apres j'enregistre la position, index, pour moi c'est numero d'appel ou quelquechose unique pour préciser la ligne ou est la duplicata :

    // premier reseau
    mobileOP1s = (from mOP1 in results
    where mOP1.Operateur1.Contains(op1)
    select mOP1.Mobile1).Distinct().ToList();

    // boucle
    foreach (var mobileOP1 in mobileOP1s)
    {
    // seconde reseau
    var mobileOP2s = (from mOP2 in results
    where mOP2.Operateur2.Contains(op2) &&
    mOP2.Mobile2 == mobileOP1
    select new
    {
    mOP2.Mobile2,
    mOP2.Nappel
    }).ToList();

    foreach (var mobileOP2 in mobileOP2s)
    {
    int cmpVal = 1;
    cmpVal = mobileOP1.ToString().CompareTo(mobileOP2.Mobile2.ToString());

    if (cmpVal == 0) // Nom de deux mobiles sont de memes valeurs
    tabNAppel[i] = mobileOP2.Nappel.Value; // NumAppel dans la table
    i++;
    }
    return tabNAppel;

  5. #5
    Membre à l'essai
    Femme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2013
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2013
    Messages : 19
    Points : 16
    Points
    16
    Par défaut
    Excuse-moi, je me suis troper de choix entre les balises.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    // premier reseau
    mobileOP1s = (from mOP1 in results
    where mOP1.Operateur1.Contains(op1)
    select mOP1.Mobile1).Distinct().ToList();
     
    // boucle
    foreach (var mobileOP1 in mobileOP1s)
    {
    // seconde reseau
    var mobileOP2s = (from mOP2 in results
    where mOP2.Operateur2.Contains(op2) &&
    mOP2.Mobile2 == mobileOP1
    select new
    {
    mOP2.Mobile2,
    mOP2.Nappel
    }).ToList();
     
    foreach (var mobileOP2 in mobileOP2s)
    {
    int cmpVal = 1;
    cmpVal = mobileOP1.ToString().CompareTo(mobileOP2.Mobile2.ToString());
     
    if (cmpVal == 0) // Nom de deux mobiles sont de memes valeurs
    tabNAppel[i] = mobileOP2.Nappel.Value; // NumAppel dans la table 
    i++;
    }
    return tabNAppel;

  6. #6
    Membre habitué
    Homme Profil pro
    Architecte C#
    Inscrit en
    Février 2003
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte C#

    Informations forums :
    Inscription : Février 2003
    Messages : 78
    Points : 144
    Points
    144
    Par défaut
    Bonjour,

    ou plus simplement (avec le namespace System.Linq):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
     
        public class MonEqualityComparer:IEqualityComparer<string[]>
        {
            #region Implementation of IEqualityComparer<in string[]>
     
            public bool Equals(string[] x, string[] y)
            {
                if (x == null
                    && y == null)
                {
                    return true;
                }
                if (x == null)
                {
                    return false;
                }
                if (y == null)
                {
                    return false;
                }
     
                if (x.Length != y.Length)
                {
                    return false;
                }
                var xEnumerator = x.GetEnumerator();
                var yEnumerator = y.GetEnumerator();
                bool areEqual = true;
                while (xEnumerator.MoveNext()
                    && yEnumerator.MoveNext()
                    && areEqual)
                {
                    areEqual = areEqual
                               &&
                               string.Equals((string)xEnumerator.Current, (string)yEnumerator.Current,
                               // pour ignorer les majuscules / minuscules
                                             StringComparison.InvariantCultureIgnoreCase);
                }
     
                return areEqual;
            }
     
            public int GetHashCode(string[] obj)
            {
                return EqualityComparer<string[]>.Default.GetHashCode();
            }
     
            #endregion
        }

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
                var l1 = new List<string[]>
                             {
                                 new[]
                                     {
                                      "toto",
                                      "tata",
                                      "tutu"
                                     },
                                 new []
                                     {
                                         "tata",
                                         "tutu",
                                         "titi"
                                     },
                             };
                var l2 = new List<string[]>
                             {
                                 new[]
                                     {
                                         "tata",
                                         "tutu",
                                         "titi"
                                     },
                                 new[]
                                     {
                                         "titi",
                                         "toto",
                                         "test"
                                     }
     
                             };
                var r = l1.Intersect(l2, new MonEqualityComparer()).Any();
    Bonne journée.

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

Discussions similaires

  1. [Formulaires] Lien entre deux listes
    Par Melhiril dans le forum IHM
    Réponses: 2
    Dernier message: 25/04/2007, 14h13
  2. Ligne entre deux listes
    Par dehorter olivier dans le forum Delphi
    Réponses: 3
    Dernier message: 02/02/2007, 16h46
  3. [VB6] Passage d'éléments entre deux listes
    Par Nesejet dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 01/08/2006, 11h41
  4. Différence entre deux listes
    Par Celelibi dans le forum Linux
    Réponses: 4
    Dernier message: 26/04/2006, 09h46
  5. [FLASH MX2004] Drag and drop entre deux List
    Par aldo-tlse dans le forum Flash
    Réponses: 15
    Dernier message: 24/09/2005, 01h10

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