从日期列表中查找最小日期值

Finding the minimum date value from a list of dates

这会给我一个开始日期列表:(它们存储为 STRING

var startDate = myValues.Select(t => t.StartDate).ToList();

我只需要它从中选择最早的日期值。如果它是一个空字符串那么它也是赢家,如果没有空字符串那么只看哪个是真正最早的。

有没有一种方法可以使用 LINQ 将这部分与上面的部分结合起来 一次找到它?而不是单独编写更多逻辑来从该列表中找到最小日期?

类似于:

string winner = myValues.Select(t => t.StartDate)
    .Select(s => new{ str = s, date = DateTime.TryParse(s, out DateTime dt) ? dt : new DateTime?() })
    .OrderByDescending(x => String.IsNullOrEmpty(x.str))
    .ThenByDescending(x => x.date.HasValue)
    .ThenBy(x => x.date.GetValueOrDefault())
    .Select(x => x.str)
    .First();

这可能对你有帮助

var result = myValues?.Where(t=>!string.IsNullOrEmpty(t.StartDate))?.
  Select(t => { DateTime.TryParse(t.StartDate, out DateTime date); return date;})?.
  Min();