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 № 1Wenn 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();