public void ShouldHandleAggregate()
        {
            var query = _query.Select(o => o.Id);

            var sumId1    = query.Aggregate((i1, i2) => i1 + i2);
            var dynSumId1 = query.Aggregate("(i1, i2) => i1 + i2");

            Assert.Equal(sumId1, dynSumId1);

            var sumId2    = query.Aggregate(42, (i1, i2) => i1 + i2);
            var dynSumId2 = query.Aggregate(42, "(i1, i2) => i1 + i2");

            Assert.Equal(sumId2, dynSumId2);

            var sumId3    = query.Aggregate(42, (i1, i2) => i1 + i2, i => i.ToString());
            var dynSumId3 = query.Aggregate(42, "(i1, i2) => i1 + i2", "i => i.ToString()");

            Assert.Throws <ArgumentNullException>(() => Dyn.Aggregate(null, ""));
            Assert.Throws <ArgumentNullException>(() => Dyn.Aggregate(_query, ""));
            Assert.Throws <ArgumentNullException>(() => Dyn.Aggregate(null, (object)null, ""));
            Assert.Throws <ArgumentNullException>(() => Dyn.Aggregate(_query, (object)null, ""));
            Assert.Throws <ArgumentNullException>(() => Dyn.Aggregate(_query, 42, ""));
            Assert.Throws <ArgumentNullException>(() => Dyn.Aggregate(null, (object)null, "", ""));
            Assert.Throws <ArgumentNullException>(() => Dyn.Aggregate(_query, (object)null, "", ""));
            Assert.Throws <ArgumentNullException>(() => Dyn.Aggregate(_query, 42, "", ""));
            Assert.Throws <ArgumentNullException>(() => Dyn.Aggregate(_query, 42, "Id", ""));
        }