Нахождение минимального значения даты из списка дат - PullRequest
0 голосов
/ 28 января 2019

Это даст мне список моих начальных дат: (они хранятся как STRING )

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

Мне нужно только выбрать самое раннее значение даты из него.И если это пустая строка, то это также победитель, если нет пустой строки, просто посмотрите, какая из них действительно самая ранняя.

Можно ли использовать LINQ и для объединения этой части с частью, описанной выше, чтобы найти ее за один раз?Вместо того, чтобы писать больше логики отдельно, чтобы найти минимальную дату из этого списка?

Ответы [ 2 ]

0 голосов
/ 29 января 2019

это может вам помочь

var result = myValues?.Where(t=>!string.IsNullOrEmpty(t.StartDate))?.
  Select(t => { DateTime.TryParse(t.StartDate, out DateTime date); return date;})?.
  Min();
0 голосов
/ 28 января 2019

Что-то вроде:

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();
...