diff --git a/AsbCloudInfrastructure/Services/TelemetryDataBaseService.cs b/AsbCloudInfrastructure/Services/TelemetryDataBaseService.cs index e3272ef5..42e86342 100644 --- a/AsbCloudInfrastructure/Services/TelemetryDataBaseService.cs +++ b/AsbCloudInfrastructure/Services/TelemetryDataBaseService.cs @@ -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); }