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は1LINQを使用する場合は、次のように簡単になります。
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
あなたは置くことができます DateTimes
値 List<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();