使用Linq在列表中获取月份

时间:2014-03-29 09:17:04

标签: c# linq

我有这样的列表

 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仅获取不同的飞蛾。任何人都可以指出正确的方法吗?

3 个答案:

答案 0 :(得分:1)

您正在寻找Distinct方法。

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

答案 1 :(得分:1)

我认为您可以使用Linq Distinct()函数,如下所示:

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

答案 2 :(得分:1)

试试这个:

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