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)
|
if (fullDataCount > 1.75 * approxPointsCount)
|
||||||
{
|
{
|
||||||
var m = (int)Math.Round(1d * fullDataCount / 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)
|
if (m > 1)
|
||||||
query = query.Where((d) => (((d.Date.DayOfYear*24 + d.Date.Hour)*60 + d.Date.Minute)*60 + d.Date.Second) % m == 0);
|
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