从日期列表中查找最小日期值
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();
这会给我一个开始日期列表:(它们存储为 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();