0
votes

Comment rechercher des doublons dans une liste énumérable Vérification des propriétés spécifiques

J'ai une liste énumérable d'objets dedans.

L'objet a les propriétés suivantes: -IDENTIFIANT -Nom -Type

Je voudrais collecter les ID-S de ces objets qui ont le même nom et le même nom dans la liste.


0 commentaires

3 Réponses :


0
votes

Utilisez LINQ .GROUPBY () Il créera une liste de listes où chaque liste est organisée par une clé.

list.groupby (e => nouveau {e.name, e.type})


2 commentaires

Pourquoi était-ce coiffé? J'ai supprimé maintenant ma réponse, comme l'utilise la même approche, mais peut-être était trop en détail.


Vous avez seulement partiellement répondu à la question



1
votes

Pour rechercher des doublons (basé sur deux champs- nom et tapez ) dans une collection et récupérer un champ thid ( ID ), vous devez commencer par briser le Problèmes dans les parties.

1) Trouvez des doublons

  • Les champs de clés de groupeby, (nom et type)

    list.groupby (x => nouveau {x.name, x.type})

    • groupes de filtres qui ont plus de 1 éléments

      list.groupby (x => nouveau {x.name, x.type}). où (x => x.count ()> 1)

      2) Sélectionnez IDS

      • aplatir les groupes

        list.groupby (x => nouveau {x.name, x.type}) . Où (x => x.count ()> 1) .SelectMany (x => x.toliste ())

        • Sélectionnez IDS

          list.groupby (x => nouveau {x.name, x.type}) . Où (x => x.count ()> 1) .SelectMany (x => x.toliste ()). Sélectionnez (x => x.Id)

          Tout le mettre ensemble, par exemple, xxx

          sortie pour l'exemple ci-dessus xxx


0 commentaires

1
votes

Utilisez LINQ et Groupe CODE> pour regrouper tous les objets par nom et tapez, alors prenez-les uniquement avec un compte> 1.

var group = from myObject o in myObjects
           group new { p.Name, p.Type } into grp
           select new { Name = grp.Key.Name, Type = grp.Key.Type, Count = grp.Count() };

var dups = group.Where(g=>g.Count >1);


0 commentaires