J'ai plusieurs listes de chaînes, IList<string>
, que je veux consolider dans une liste montrant une chaîne et un nombre distincts pour chaque article (comme un dictionnaire). Quel est le moyen le plus efficace de le faire?Ajout de listes ensemble
Répondre
Dictionary<string, int> count = new Dictionary<string, int>();
foreach(IList<int> list in lists)
foreach(int item in list) {
int value;
if (count.TryGetValue(item, out value))
count[item] = value + 1;
else
count[item] = 1;
}
LINQ (certainement le plus efficace en termes de code type et maintenir, la performance globale sera au sujet le même que toute autre approche):
si les listes sont variables distinctes:
var qry = from s in listA.Concat(listB).Concat(listC) // etc
group s by s into tmp
select new { Item = tmp.Key, Count = tmp.Count() };
si les listes sont tous dans une liste des parents (des listes):
var qry = from list in lists
from s in list
group s by s into tmp
select new { Item = tmp.Key, Count = tmp.Count() };
Ensuite, si vous voulez vraiment une liste:
var resultList = qry.ToList();
le deuxième exemple ne semble pas fonctionner. il ne permettra pas la deuxième "liste". – zsharp
@zsharp - ça marche bien (je viens de vérifier deux fois). Avez-vous une variable locale appelée "liste"? Notez la seule variable avant la requête dans l'exemple est "listes". –
List<List<string>> source = GetLists();
//
Dictionary<string, int> result = source
.SelectMany(sublist => sublist)
.GroupBy(s => s)
.ToDictionary(g => g.Key, g => g.Count())
- 1. Joindre deux listes ensemble
- 2. Ajout de variables ensemble à l'aide Actionscript
- 3. Comment combiner plusieurs listes IEnumerable ensemble
- 4. Ajout de 2 listes déroulantes à la table associée
- 5. Fusionner deux listes de listes - Python
- 6. Recherche Python dans les listes de listes
- 7. Ajout de la mise en forme conditionnelle et de la ponctuation à un ensemble de variables
- 8. 2 "Listes" exclusives de RadioButton
- 9. Comment convertir un tuple imbriqué de tuples et de listes en listes de listes en Python?
- 10. Indicateur d'intersection de deux listes utilisant LINQ
- 11. Créer des listes de listes de manière pythonique
- 12. Ajout d'une colonne fictive à un ensemble de données fortement typé
- 13. JSTL Ensembles et listes - vérifier si l'élément existe dans un ensemble
- 14. Listes de Sharepoint - GroupBy?
- 15. Listes NotifyPropertyChanging
- 16. Ensemble de requêtes
- 17. Combinaison de plusieurs listes Triés
- 18. Interfaces et listes de distribution
- 19. StackOverflowException avec de grandes listes
- 20. Listes de prénoms communs, analysables par ordinateur?
- 21. Ajout de matrices en C#?
- 22. Ajout de méthodes aux types nullables
- 23. Associer deux colonnes de point de partage ensemble
- 24. Ajout suppression de guillemets
- 25. listes trouver algorithme
- 26. Colonnes de pièces jointes multiples dans les listes SharePoint
- 27. Clés, listes, valeurs
- 28. LINQ - joindre plusieurs listes
- 29. Listes intermédiaires dans Haskell
- 30. Listes génériques C#
Hmm, je pensais que c'était double, mais je suppose que ce n'est pas à cause de la partie « dictionnaire ». –