2010-09-04 4 views
1

j'ai une série d'événements:Convertir un tableau d'objets à un dictionnaire d'objets

IEnumerable<CalendarEvent> events 

je veux convertir en un dictionnaire si j'ai essayé ceci:

Dictionary<string, CalendarEvent> dict = events.ToDictionary(r => r.Date.ToString("MMM dd, yyyy")); 

la question est que j'ai plusieurs événements sur une seule date donc je besoin d'un moyen de convertir à un

Dictionary<string, List<CalendarEvent>> 

pour soutenir les jours qui ont plusieurs adresses e évents

Répondre

3

Vous pouvez utiliser ToLookup à la place.

var lookup = events.ToLookup(r => r.Date.ToString("MMM dd, yyyy")); 

Lorsque vous indexez une recherche, vous obtenez un dénombrable de tous les résultats correspondant, donc dans cet exemple lookup["Sep 04, 2010"] vous donnerait un IEnumerable<CalendarEvent>. Si aucun résultat ne correspond, vous obtiendrez une énumération vide plutôt qu'une exception KeyNotFoundException.

Vous pouvez également utiliser GroupBy puis ToDictionary:

Dictionary<string, List<CalendarEvent>> dict = events 
    .GroupBy(r => r.Date.ToString("MMM dd, yyyy")) 
    .ToDictionary(group => group.Key, group => group.ToList()); 
Questions connexes