为了账号安全,请及时绑定邮箱和手机立即绑定

如何将 List<CustomType> 转换为 Dictionary

如何将 List<CustomType> 转换为 Dictionary

C#
偶然的你 2023-08-20 15:25:01
假设我们有这个自定义类型:public class Holiday{    public Guid Id { get; } = Guid.NewGuid();    public string holidayName { get; set; };    public DateTime fromDate { get; set; };    public DateTime toDate { get; set; };    public int year { get; set; };}我需要将假期列表 ( List<Holiday>) 转换为字典 ( Dictionary<int, List<Holiday>>)。键是不同的年份,值是属于该年份的假期列表。我试图通过查看这个答案/问题来做到这一点 ,但没有成功。
查看完整描述

1 回答

?
慕尼黑5688855

TA贡献1848条经验 获得超2个赞

您可以使用GroupByLINQ 中的方法来完成此操作,该方法

根据指定的键选择器函数对序列的元素进行分组

在您的情况下,关键是year语法GroupBy如下所示:

List<Holiday> holidays = new List<Holiday>

{

    new Holiday

    {

        year = 1999,

        holidayName = "Easter"

    },

    new Holiday

    {

        year = 1999,

        holidayName = "Christmas"

    },

    new Holiday

    {

        year = 2000,

        holidayName = "Christmas"

    }

};


Dictionary<int, List<Holiday>> holidaysByYear = holidays

    .GroupBy(h => h.year)

    .ToDictionary(h => h.Key, h => h.ToList());


foreach (KeyValuePair<int, List<Holiday>> holidaysInYear in holidaysByYear)

{

    Console.WriteLine($"Holidays in {holidaysInYear.Key}");

    foreach (Holiday holiday in holidaysInYear.Value)

    {

        Console.WriteLine(holiday.holidayName);

    }

}

其产生的输出为:

https://img2.sycdn.imooc.com/64e1c00600019a1202620211.jpg


查看完整回答
反对 回复 2023-08-20
  • 1 回答
  • 0 关注
  • 99 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信