0

C#でオブジェクトのリストを操作しています。各オブジェクトにはDateTimeプロパティが含まれており、1時間にn個のオブジェクトが発生したかどうかを知る必要があります。

各オブジェクトを比較する必要がありますか?もっと速い方法はありますか?わかりませんが、これはLinqで実行できますか?

4

1 に答える 1

4

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();
}
于 2013-01-25T23:20:06.120 に答える