我有一系列事件:
IEnumerable<CalendarEvent> events
我想将其转换为字典,所以我尝试了这个:
Dictionary<string, CalendarEvent> dict = events.ToDictionary(r => r.Date.ToString("MMM dd, yyyy"));
问题是我在一个日期有多个事件,所以我需要一种方法将其转换为
Dictionary<string, List<CalendarEvent>>
支持有多个事件的日子
答案 0 :(得分: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());