将对象数组转换为对象字典

发布于 2024-09-17 01:13:15 字数 387 浏览 15 评论 0原文

我有一个事件数组:

IEnumerable<CalendarEvent> events

我想将其转换为字典,所以我尝试了这个:

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

问题是我在一个日期有多个事件,所以我需要一种方法将其转换为 a

Dictionary<string, List<CalendarEvent>> 

以支持有多个事件的日子

i have an array of events:

IEnumerable<CalendarEvent> events

i want to convert this to a dictionary so i tried this:

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

the issue is that i have multiple events on a single date so i need a way to convert this to a

Dictionary<string, List<CalendarEvent>> 

to support the days which have multiple events

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

念﹏祤嫣 2024-09-24 01:13:15

您可以使用 ToLookup 代替。

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

当您为查找建立索引时,您会获得所有匹配结果的枚举,因此在该示例中 lookup["Sep 04, 2010"] 将为您提供一个 IEnumerable 。如果没有结果匹配,您将得到一个空的可枚举值,而不是 KeyNotFoundException。

您还可以使用 GroupBy 然后使用 ToDictionary:

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

You can use ToLookup instead.

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

When you index a lookup, you get an enumerable of all matching results, so in that example lookup["Sep 04, 2010"] would give you an IEnumerable<CalendarEvent>. If no results match, you will get an empty enumerable rather than a KeyNotFoundException.

You could also use GroupBy and then ToDictionary:

Dictionary<string, List<CalendarEvent>> dict = events
    .GroupBy(r => r.Date.ToString("MMM dd, yyyy"))
    .ToDictionary(group => group.Key, group => group.ToList());
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文