2010-09-04 75 views
1

我有事件的數組:轉換對象的數組對象的字典

IEnumerable<CalendarEvent> events 

我想將其轉換爲一個字典,所以我嘗試這樣做:

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

的問題我有一個單一的日期多個事件,所以我需要一種方法來將其轉換爲一個

Dictionary<string, List<CalendarEvent>> 

以支持多個e通風口

回答

3

您可以改用ToLookup

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

當索引查找,你會得到一個枚舉所有匹配的結果,所以在這個例子lookup["Sep 04, 2010"]會給你一個IEnumerable<CalendarEvent>。如果沒有結果匹配,您將得到一個空的枚舉而不是KeyNotFoundException。

您也可以使用GroupBy然後ToDictionary:

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