LINQ: à l'Ordre, En nombre, des Éléments Uniques dans la Liste des<string>
J'ai une liste d'identifiants correctement stocké dans une Liste<>. J'ai maintenant besoin de Groupe de cette liste et d'obtenir un comptage du nombre d'occurrences triés dans l'ordre décroissant.
Exemple:
List<string> aryIDs = new List<string>;
aryIDs.Add("1234");
aryIDs.Add("4321");
aryIDs.Add("3214");
aryIDs.Add("1234");
aryIDs.Add("4321");
aryIDs.Add("1234");
Donnerait:
"1234", 3
"4321", 2
"3214", 1
Ce serait facile, en TSQL, mais je voudrais éviter le serveur aller-retour inutiles, tableaux, etc. si cela est possible.
Merci d'avance.
Mise à jour: Le VB.NET conversion pour Ralph Shillington la réponse ci-dessous:
Dim result = From id In aryIDs _
Group id By id Into Group _
Order By Group.Count() Descending _
Select id, Count = Group.Count()
result.Dump()
Vous mentionnez T-SQL... Tu veux dire, toutes ces données sont dans la base de données? Pourquoi ne pas chercher déjà regroupés et triés? Ou suis-je malentendu quelque chose?
OriginalL'auteur Brad M | 2011-02-08
Vous devez vous connecter pour publier un commentaire.
Couper et le coller dans LinqPad et vous devriez être bon d'aller.
Il pourrait aussi être écrit en utilisant des expressions Lambda comme:
est l'équivalent de la présente instruction de la requête en expression Lambda?
j'ai mis à jour la réponse à inclure une expression Lambda.
beaucoup ça fonctionne.J'ai déjà voté 🙂
Je l'ai eu, sera mise à jour ci-dessus.
OriginalL'auteur Ralph Shillington
Comment sur http://msdn.microsoft.com/en-us/vcsharp/aa336747#countGrouped:
OriginalL'auteur Shan Plourde