C#でオブジェクトのリストを操作しています。各オブジェクトにはDateTimeプロパティが含まれており、1時間にn個のオブジェクトが発生したかどうかを知る必要があります。
各オブジェクトを比較する必要がありますか?もっと速い方法はありますか?わかりませんが、これはLinqで実行できますか?
Where
+を使用できますCount
:
// for example today between 12 and 13 o'clock
DateTime startHour = DateTime.ToDay.AddHours(12)
DateTime endHour = startHour.AddHours(1);
var inHour = collection.Where(o => o.DateTimeProperty >= startHour
&& o.DateTimeProperty <= endHour);
int count = inHour.Count();
もちろん、これは単純なループと同じです。しかし、それはあなたが行かなければならない方法です。
使用することもできますGroupBy
が、なぜそれが必要になるのかわかりません。
var hourGroup = collection
.GroupBy(o => o.DateTimeProperty.AddMinutes((-1) * o.DateTimeProperty.Minute))
.FirstOrDefault(g => g.Key == startHour);
if(hourGroup != null)
{
int count = hourGroup.Count();
}