使用Linq获取列表中的月份

本文关键字:列表 Linq 获取 使用 | 更新日期: 2023-09-27 17:54:38

我有一个这样的列表

 public class Result
{
    public string id { get; set; }
    public string name { get; set; }
    public string startDate { get; set; } //smaple date 2014-03-31T12:30:03
}

List<Result>

现在我想获得列表startDate中所有的月份名称。我试过这样写

List<string> mnamesList= result.Select(s => Convert.ToDateTime(s.startDate).ToString("MMMM")).ToList();

正如你所看到的,这个循环将返回重复的月份名称,我不知道如何使用Linq只获取不同的月份。有谁能指出正确的方法吗?

使用Linq获取列表中的月份

我认为你可以使用Linq Distinct()函数如下:

List<string> mnamesList= result.Select(s => Convert.ToDateTime(s.startDate).ToString("MMMM")).Distinct().ToList();

您正在寻找Distinct方法。

List<string> distinctMonths = result.Select(s => 
  Convert.ToDateTime(s.startDate).ToString("MMMM")).Distinct().ToList();

试试这个:

List<string> months = result.Select(s => DateTime.Parse(s.StartDate))
                            .Select(x=>x.ToString("MMMM"))
                            .Distinct()
                            .ToList();