forked from ddrilling/AsbCloudServer
CS2-115 TelemetryDataBaseService.Get() прореживание выборки может работать не корректно
This commit is contained in:
parent
bc77b128b0
commit
04052af874
@ -125,6 +125,25 @@ namespace AsbCloudInfrastructure.Services
|
||||
if (fullDataCount > 1.75 * approxPointsCount)
|
||||
{
|
||||
var m = (int)Math.Round(1d * fullDataCount / approxPointsCount);
|
||||
|
||||
switch (m)
|
||||
{
|
||||
//case var i when i <= 1: // тут для полноты, но никогда не сработает из-за условия выше
|
||||
// break;
|
||||
case var i when i < 10:
|
||||
query = query.Where((d) => d.Date.Second % m == 0);
|
||||
break;
|
||||
case var i when i < 30:
|
||||
query = query.Where((d) => (d.Date.Minute * 60 + d.Date.Second) % m == 0);
|
||||
break;
|
||||
case var i when i < 600:
|
||||
query = query.Where((d) => ((d.Date.Hour * 60 + d.Date.Minute) * 60 + d.Date.Second) % m == 0);
|
||||
break;
|
||||
default:
|
||||
query = query.Where((d) => (((d.Date.DayOfYear * 24 + d.Date.Hour) * 60 + d.Date.Minute) * 60 + d.Date.Second) % m == 0);
|
||||
break;
|
||||
}
|
||||
|
||||
if (m > 1)
|
||||
query = query.Where((d) => (((d.Date.DayOfYear*24 + d.Date.Hour)*60 + d.Date.Minute)*60 + d.Date.Second) % m == 0);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user