Estou tentando verificar entre 4 entradas, qual das datas (com hora) é a mais recente até a data atual (e hora).
As entradas podem ser algo como isto:
2018-05-07 18:31:57
2018-05-07 18:27:02
2018-05-07 18:26:19
2018-05-07 18:23:44
Quero que ele retorne o mais recente, então, se a hora for "2018-05-07 18:32:00"deve retornar"2018-05-07 18:31:57".
Como eu implementaria esse recurso?
Respostas:
1 para resposta № 1Se você deseja usar o LINQ, será fácil assim:
List<DateTime> times = new List<DateTime> {
DateTime.Parse("2018 - 05- 07 18:31:57"),
DateTime.Parse("2018 - 05 - 07 18:27:02"),
DateTime.Parse("2018 - 05 - 07 18:26:19"),
DateTime.Parse("2018 - 05 - 07 18:23:44")
};
DateTime higestDate = times.Max();
Ou, de maneira mais curta, que é basicamente a mesma:
DateTime higestDate = new List<DateTime> {
DateTime.Parse("2018 - 05- 07 18:31:57"),
DateTime.Parse("2018 - 05 - 07 18:27:02"),
DateTime.Parse("2018 - 05 - 07 18:26:19"),
DateTime.Parse("2018 - 05 - 07 18:23:44")
}.Max();
Eu testei e funciona bem.
Caso contrário, você terá que percorrê-los e comparar cada um como este:
List<DateTime> times= new List<DateTime> {
DateTime.Parse("2018 - 05-07 18:31:57"),
DateTime.Parse("2018 - 05 - 07 18:27:02"),
DateTime.Parse("2018 - 05 - 07 18:26:19"),
DateTime.Parse("2018 - 05 - 07 18:23:44")
};
DateTime highestDate = times[0];
foreach(DateTime date in times)
{
if (date > highestDate)
highestDate = date;
}
e isso lhe dará a data mais alta.
1 para resposta № 2
Tente isto:
var inputDates = new List<DateTime>
{
DateTime.Parse("2018 - 05-07 18:31:57"),
DateTime.Parse("2018 - 05 - 07 18:27:02"),
DateTime.Parse("2018 - 05 - 07 18:26:19"),
DateTime.Parse("2018 - 05 - 07 18:23:44")
};
var inputDateTime = DateTime.Parse("2018 - 05 - 07 18:32:00");
var date = inputDates.Where(d => d < inputDateTime).OrderByDescending(r => r.Ticks).FirstOrDefault();
-1 para resposta № 3
Você pode colocar DateTimes
valor em List<DateTime>
e classifique a sua lista desc para obter a mais recente, como abaixo
List<DateTime> myCollection = new List<DateTime>();
myCollection.Add(Convert.ToDateTime(DateTime.Now));
myCollection.Add(Convert.ToDateTime(DateTime.Now));
myCollection.Add(Convert.ToDateTime(DateTime.Now));
var descendingOrder = myCollection.OrderByDescending(i => i).FirstOrDefault();