J'ai une liste énumérable d'objets dedans. P>
L'objet a les propriétés suivantes: -IDENTIFIANT -Nom -Type p>
Je voudrais collecter les ID-S de ces objets qui ont le même nom et le même nom dans la liste. P>
3 Réponses :
Utilisez LINQ .GROUPBY () CODE> Il créera une liste de listes où chaque liste est organisée par une clé. p>
list.groupby (e => nouveau {e.name, e.type}) code> p>
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
Pour rechercher des doublons (basé sur deux champs- 1) Trouvez des doublons p> 2) Sélectionnez IDS P> Sélectionnez IDS P>
Tout le mettre ensemble, par exemple, p> sortie pour l'exemple ci-dessus p> nom et tapez code>) dans une collection et récupérer un champ thid (
ID code>), vous devez commencer par briser le Problèmes dans les parties.
list.groupby (x => nouveau {x.name, x.type}) code> p>
list.groupby (x => nouveau {x.name, x.type}). où (x => x.count ()> 1) code> p> P>
list.groupby (x => nouveau {x.name, x.type})
. Où (x => x.count ()> 1)
.SelectMany (x => x.toliste ()) code> p>
list.groupby (x => nouveau {x.name, x.type})
. Où (x => x.count ()> 1)
.SelectMany (x => x.toliste ()). Sélectionnez (x => x.Id) code> p> li>
ul>
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);