Existe-t-il un moyen d'interroger une liste d'objets, de les grouper et de les afficher sous la forme d'une liste de listes? Je ne sais pas comment l'expliquer alors je vais vous montrer. J'ai une liste remplie de notes (List<Note> noteList
). Il existe plusieurs créateurs et plusieurs notes pour chaque créateur. J'essaie de comprendre s'il existe un moyen d'utiliser une requête LINQ pour regrouper les notes par CreatorID, les séparer et les afficher sous la forme d'une liste de notes (List<List<Note>> creatorsNotes
). De cette façon, je peux passer en revue créateursNotes pour obtenir des créateurs et leur liste de notes.Obtenir la liste de la liste d'objets de la requête linq
Répondre
Le plus simple serait d'utiliser ToLookup
:
var groups = noteList.ToLookup(n => n.CreatorID);
foreach(var group in groups)
{
Console.WriteLine("Items with CreatorID {0}", group.Key);
foreach(var item in group)
Console.WriteLine(" Title: {0}", item.Title);
}
Vous pouvez également utiliser GroupBy
si nécessaire. Notez que ceux-ci ne créeront pas directement un List<List<Note>>
, cependant. Si cela est nécessaire, vous pouvez faire:
List<List<Note>> grouped = noteList.GroupBy(n => n.CreatorID)
.Select(g => g.ToList())
.ToList();
Bien sûr, nous allons nous list
être le List<Note>
:
var creatorNotes = list
.GroupBy(note => note.CreatorID)
.Select(g => new
{
g.CreatorID,
Notes = g.ToList()
})
.ToList();
Comme l'a souligné Reed, ceci est une liste d'un type anonyme qui indique groupés CreatorID
à la racine ainsi que le Notes
associé à celui CreatorID
.
Cela fera une liste d'un type anonyme contenant la clé + une liste. –
@ReedCopsey, à droite, de sorte que l'OP est capable de savoir ce que le groupe est. Je suppose que c'est une autre façon d'aborder la stratégie de recherche que vous avez également fournie. –
- 1. requête linq avec la liste
- 2. Requête LINQ pour la récupération des données de la liste
- 3. Linq obtenir des mots de la liste
- 4. Obtenir la liste des vues dans Linq
- 5. Obtenir la liste Distinct de chaîne de la liste des chaînes de la liste en utilisant Linq
- 6. Requête Linq où contient la liste dans une liste
- 7. LINQ pour une liste de la liste
- 8. requête LINQ Retourne la liste des listes
- 9. Liste d'index de retour de la requête Linq dynamique
- 10. Liste imbriquées requête LINQ
- 11. Accéder à la liste de base d'une requête Linq
- 12. LINQ liste Interrogation dans la liste
- 13. Obtenir la dernière place dans la liste LINQ
- 14. liste Linq à l'intérieur Liste requête
- 15. Comment obtenir la liste des résultats de la liste des valeurs d'identité avec LINQ to SQL?
- 16. Simple Linq à la liste (de T)
- 17. LINQ obtenir la première valeur dans la liste donnée
- 18. linq to object Obtenir l'élément de la liste
- 19. LINQ to DataSet pour obtenir la liste générique de DataTable
- 20. Obtenir la liste des DataKeyValues de RadGridView en utilisant LINQ
- 21. Obtenir x éléments spécifiques de la liste en utilisant linq
- 22. Obtenir la liste distincte ou groupby LINQ de propriété d'objet
- 23. Linq Obtenir Max de la liste des dossiers
- 24. Comment obtenir la liste htmldocument depuis l'url de la liste?
- 25. Linq - Comment obtenir la position d'une valeur dans une liste
- 26. Obtenir la liste intérieure de la liste de la liste C#
- 27. Obtenir l'élément de la liste
- 28. Liste Sharepoint Requête Dynamic Linq
- 29. Amélioration de la requête LINQ
- 30. Linq à la liste générique?
+1 pour la stratégie 'ToLookup'. –
Merci à vous deux pour les réponses. Reed's GroupBy m'a donné exactement ce que je voulais avec le moins de maux de tête. – Jeremy