C#で特定の間隔でデータベースから値をフェッチしたいのですが、そのためのLINQクエリが必要です。これは私のデータベースがどのように見えるかです
Id SensorId Value CreatedOn
1 8 33.5 15-11-2012 5:48 PM
2 5 49.2 15-11-2012 5:48 PM
3 8 33.2 15-11-2012 5:49 PM
4 5 48.5 15-11-2012 5:49 PM
5 8 31.8 15-11-2012 5:50 PM
6 5 42.5 15-11-2012 5:50 PM
7 8 36.5 15-11-2012 5:51 PM
8 5 46.5 15-11-2012 5:51 PM
9 8 39.2 15-11-2012 5:52 PM
10 5 44.4 15-11-2012 5:52 PM
11 8 36.5 15-11-2012 5:53 PM
12 5 46.5 15-11-2012 5:53 PM
13 8 39.2 15-11-2012 5:54 PM
14 5 44.4 15-11-2012 5:54 PM
.. . .... ...................
間隔は分単位です。したがって、間隔が10分である場合、5:48、5:58、6:08などの値が必要です...
これは私が試したことです
while (startDateTime <= endDateTime)
{
var fetchIndex =
fullValues.Where(
item =>
item.CreatedOn >= startDateTime &&
item.CreatedOn < startDateTime.AddMinutes(1)).Select(
item => item.FetchIndex).FirstOrDefault();
if (fetchIndex != 0)
{
var temp = fullValues.Where(item => item.FetchIndex == fetchIndex).ToList();
result = result.Union(temp);
}
startDateTime = startDateTime.AddMinutes(interval);
}
whileループはテーブルを反復処理するため、これらの値を取得するには多くの時間がかかります。
単一のクエリでデータを取得する方法はありますか?