Example #1
0
        public void GroupByExpressionHoursButExpanded()
        {
            var sw = Stopwatch.StartNew();
            INullableQuerySerie <float> nullableQuerySerie  = _unitUnderTest9m.GroupBy("3h", a => a.First());
            IReadOnlyList <ISingleDataRow <float?> > result = nullableQuerySerie.Rows;
            IObjectQuerySerie result2 = nullableQuerySerie;
            object            val     = result2.Rows.First().Value;

            result[0].TimeUtc.Should().Be(new DateTime(2010, 1, 1, 12, 0, 0, DateTimeKind.Utc));
            result[1].TimeUtc.Should().Be(new DateTime(2010, 1, 1, 15, 0, 0, DateTimeKind.Utc));
            sw.Stop();
        }
Example #2
0
        public INullableQuerySerie <T> Zip(INullableQuerySerie <T> secondQuery, string resultQueryName,
                                           Func <T?, T?, T?> transformAction)
        {
            if (Rows.Count != secondQuery.Rows.Count)
            {
                throw new ArgumentOutOfRangeException(nameof(secondQuery),
                                                      "Zip with different length of row not possible");
            }
            var resultRows = new List <ISingleDataRow <T?> >(secondQuery.Rows.Count);

            var result = new NullableQuerySerie <T>(resultRows, this).Alias(resultQueryName);

            for (int i = 0; i < Rows.Count; i++)
            {
                if (Rows[i].TimeUtc != secondQuery.Rows[i].TimeUtc)
                {
                    throw new ArgumentOutOfRangeException(nameof(secondQuery), "Zip with not aligned times");
                }

                resultRows.Add(new SingleDataRow <T?>(Rows[i].TimeUtc,
                                                      transformAction(Rows[i].Value, secondQuery.Rows[i].Value)));
            }
            return(result);
        }
Example #3
0
 public NullableQuerySerie(IReadOnlyList <ISingleDataRow <T?> > result, INullableQuerySerie <T> olddata)
     : base(olddata)
 {
     Rows = result;
 }
Example #4
0
 public INullableQueryTable <T> AddSerie(INullableQuerySerie <T> serie)
 {
     Series[serie.FullName] = serie;
     return(this);
 }