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(); }
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); }
public NullableQuerySerie(IReadOnlyList <ISingleDataRow <T?> > result, INullableQuerySerie <T> olddata) : base(olddata) { Rows = result; }
public INullableQueryTable <T> AddSerie(INullableQuerySerie <T> serie) { Series[serie.FullName] = serie; return(this); }