/ / Como verificar qual a data mais recente e selecioná-la [fechada] - c #

Como verificar qual data é a mais nova e escolher [fechado] - c #

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 № 1

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