2010-09-04 37 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());