如何将 List<CustomType> 转换为 Dictionary

假设我们有这个自定义类型:


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>>)。键是不同的年份,值是属于该年份的假期列表。


我试图通过查看这个答案/问题来做到这一点 ,但没有成功。



偶然的你
浏览 100回答 1
1回答

慕尼黑5688855

您可以使用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);    }}其产生的输出为:
打开App,查看更多内容
随时随地看视频慕课网APP