2010-11-12 5 views
2

Il doit y avoir une meilleure façon!Interroger une liste d'objets pour trouver le jour de la semaine avec le plus d'articles

J'ai un tas d'enregistrements de journal stockés dans une liste. Chaque enregistrement de journal a un champ CreateDate et ce que j'essaie de faire est de trouver un moyen efficace d'interroger l'objet List pour trouver le jour de la semaine avec le plus d'enregistrements (lundi, mardi, etc ...). Je pense que cela peut être fait en utilisant Linq mais je ne connais pas assez bien Linq. Il se peut que je doive faire ça le long chemin en comptant chaque jour et en les comparant les uns aux autres pour trouver le jour avec le plus de journaux mais j'espère que quelqu'un sera capable de me montrer une façon cool de le faire.

Merci.

Répondre

1
Loglist.GroupBy(log => log.CreateDate) 
    .Select(list => new { DayOfWeek = list.Key.DayOfWeek, Count = list.Count()}) 
    .OrderByDescending(list=>list.Count); 

Cela retournera une liste de (DayOfWeek, Count) dans l'ordre décroissant. Si vous n'avez besoin que du plus grand nombre de jours de la semaine, appliquez .First() à la fin de la liste ci-dessus.

+0

Cela retournera une très longue liste avec beaucoup de jours! Vous voulez probablement déplacer 'DayOfWeek' dans votre 'GroupBy' au lieu de votre 'Select'. – diceguyd30

+0

Merci à vous deux. La réponse de xandy a retourné une liste avec les jours de la semaine avec un compte de un et le commentaire de diceguyd30 pour déplacer 'DayOfWeek' au GroupBy a agrégé la liste. Voici le code qui a fonctionné pour moi: var = weekDaySummary someLogs.GroupBy (log => log.CreateDate.Value.DayOfWeek) .Choisir (liste => new {WeekDay = list.Key, Count = liste. Count()}) .OrderByDescending (list => list.Count); – fynnbob

Questions connexes