/ / So prüfen Sie, welches Datum das neueste ist, und wählen Sie es aus (geschlossen) - c #

Wie man überprüft, welches Datum das neueste ist und wählen Sie es [geschlossen] - c #

Ich versuche zwischen 4 Eingaben zu prüfen, welches Datum (mit Uhrzeit) dem aktuellen Datum (und der Uhrzeit) entspricht.

Die Eingaben können wie folgt aussehen:

2018-05-07 18:31:57
2018-05-07 18:27:02
2018-05-07 18:26:19
2018-05-07 18:23:44

Ich möchte, dass es das letzte Mal zurückgibt, also, wenn es Zeit ist "2018-05-07 18:32:00"es sollte zurückkehren"2018-05-07 18:31:57".

Wie würde ich ein solches Feature implementieren?

Antworten:

1 für die Antwort № 1

Wenn Sie LINQ verwenden möchten, ist dies einfach:

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

Oder in kürzerer Weise, was im Grunde dasselbe ist:

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

Ich habe es getestet und funktioniert gut.

Ansonsten müssen Sie sie durchlaufen und wie folgt vergleichen:

 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;
}

und dies wird Ihnen das höchste Datum bringen.


1 für die Antwort № 2

Versuche dies :

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 für die Antwort № 3

Du kannst Geben DateTimes Wert in List<DateTime> und sortieren Sie Ihre Liste absteigend, um die neueste Liste unten zu erhalten

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