/ /どの日付が最新であるかを確認して選択する方法[終了]-c#

最新の日付をチェックしてそれを選択する方法[クローズ] - C#

4つの入力間で確認しようとしていますが、日付の1つ(時間を含む)が現在の日付(および時間)の最新のものです。

入力は次のようになります。

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

最新のものを返したいので、時間が「2018-05-07 18:32:00「戻る必要があります」2018-05-07 18:31:57"

そのような機能をどのように実装しますか?

回答:

回答№1は1

LINQを使用する場合は、次のように簡単になります。

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

または、短い方法で、基本的に同じです:

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

私はそれをテストし、正常に動作します。

それ以外の場合は、それらをループして、次のようにそれぞれを比較する必要があります。

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

これにより、最高の日付が取得されます。


回答№2の場合は1

これを試して :

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

回答№3の場合は-1

あなたは置くことができます DateTimesList<DateTime> リストデスクを並べ替えて、以下のような最新のものを取得します

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