CS2-115 TelemetryDataBaseService.Get() прореживание выборки может работать не корректно

This commit is contained in:
Фролов 2021-12-01 11:08:25 +05:00
parent bc77b128b0
commit 04052af874

View File

@ -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);
} }