📜  如何从c#中的不同年份列表中提取唯一年份(1)

📅  最后修改于: 2023-12-03 15:08:14.910000             🧑  作者: Mango

如何从C#中的不同年份列表中提取唯一年份

在C#中,有时候需要从一组日期中提取出不同的年份。下面介绍两种方法实现这个功能。

1. 使用LINQ的Distinct方法

一种简洁的方法是使用LINQ的Distinct方法,以下是使用该方法的代码片段:

List<DateTime> dates = new List<DateTime> { new DateTime(2021, 1, 1), new DateTime(2021, 3, 21), new DateTime(2022, 5, 15), new DateTime(2022, 8, 1) };

var distinctYears = dates.Select(date => date.Year).Distinct();
foreach (var year in distinctYears)
{
    Console.WriteLine(year);
}

代码解释:

  1. 首先创建一个List对象,该List包含多个DateTime对象,这些对象代表不同的日期。
  2. 使用Select方法从DateTime对象中提取出每个日期的年份。
  3. 使用Distinct方法去除重复的年份。
  4. 使用foreach循环将每个不同的年份输出到控制台。
2. 使用HashSet去重

另一种方法是使用HashSet去重,以下是使用该方法的示例代码:

List<DateTime> dates = new List<DateTime> { new DateTime(2021, 1, 1), new DateTime(2021, 3, 21), new DateTime(2022, 5, 15), new DateTime(2022, 8, 1) };

HashSet<int> years = new HashSet<int>();
foreach (DateTime date in dates)
{
    years.Add(date.Year);
}

foreach (var year in years)
{
    Console.WriteLine(year);
}

代码解释:

  1. 首先创建一个HashSet对象,该对象将用于存储不同的年份。
  2. 使用foreach循环遍历所有日期,将每个日期的年份添加到HashSet中,这样会自动去除重复的年份。
  3. 使用foreach循环将每个不同的年份输出到控制台。

以上两种方法都可实现从C#中的不同年份列表中提取唯一年份的功能,选择哪一种方法主要取决于个人喜好和程序的性能要求。

参考文献: [Microsoft Docs: Distinct()] (https://docs.microsoft.com/en-us/dotnet/api/system.linq.enumerable.distinct?view=net-5.0) Microsoft Docs: HashSet<> Class (https://docs.microsoft.com/en-us/dotnet/api/system.collections.generic.hashset-1?view=net-5.0)