Example #1
0
        public void CanSelectPartially()
        {
            IPartialSelection <UserEntity, UserDto> partialSelection = Query <UserEntity>()
                                                                       .PartialSelect(x => new UserDto(x.Firstname + " " + x.Lastname));

            partialSelection
            .Add(x => new UserDto
            {
                Id = x.Id
            });

            partialSelection
            .Add(x => new UserDto
            {
                Username = x.Username
            });

            FlowQuerySelection <UserDto> users = partialSelection
                                                 .Select();

            foreach (UserDto user in users)
            {
                Assert.That(user.Id, Is.GreaterThan(0));
                Assert.That(Fullnames, Contains.Item(user.Fullname));
                Assert.That(Usernames, Contains.Item(user.Username));
            }
        }
Example #2
0
        public void PartialSelectionReturnsNullAtCompileIfEmpty()
        {
            IPartialSelection <UserEntity, UserDto> selection = DummyQuery <UserEntity>()
                                                                .PartialSelect <UserDto>();

            Expression <Func <UserEntity, UserDto> > expression = selection.Compile();

            Assert.That(expression, Is.Null);
        }
Example #3
0
        public void PartialSelectExample1()
        {
            IPartialSelection <UserEntity, UserDto> selectionBuilder = Session.FlowQuery <UserEntity>()
                                                                       .PartialSelect <UserDto>(x => new UserDto(x.Firstname + " " + x.Lastname));

            selectionBuilder
            .Add(x => new UserDto {
                Username = x.Username
            });

            FlowQuerySelection <UserDto> users = selectionBuilder
                                                 .Select();

            Assert.That(users.Count(), Is.EqualTo(4));
        }
Example #4
0
        public void AggregationsExample6Example3WithInferredGroupBy()
        {
            IPartialSelection <UserEntity, AverageLogOnsPerRoleModel> selectionBuilder = Session.FlowQuery <UserEntity>()
                                                                                         .PartialSelect(x => new AverageLogOnsPerRoleModel
            {
                AverageLogOns = Aggregate.Average(x.NumberOfLogOns)
            });

            selectionBuilder
            .Add(x => new AverageLogOnsPerRoleModel
            {
                Role = x.Role
            });

            FlowQuerySelection <AverageLogOnsPerRoleModel> averageLogOnsPerRole = selectionBuilder
                                                                                  .Select();

            Assert.That(averageLogOnsPerRole.Count(), Is.EqualTo(3));
        }
Example #5
0
        /// <inheritdoc />
        public virtual FlowQuerySelection <TDestination> Select <TDestination>
        (
            IPartialSelection <TSource, TDestination> combiner
        )
        {
            if (combiner == null)
            {
                throw new ArgumentNullException("combiner");
            }

            if (combiner.Count == 0)
            {
                throw new ArgumentException("No projection is made in ExpressionCombiner'2", "combiner");
            }

            Expression <Func <TSource, TDestination> > expression = combiner.Compile();

            return(Select(expression));
        }
Example #6
0
        /// <inheritdoc />
        public virtual void Select <TDestination>
        (
            IResultStream <TDestination> stream,
            IPartialSelection <TSource, TDestination> combiner
        )
        {
            if (combiner == null)
            {
                throw new ArgumentNullException("combiner");
            }

            if (combiner.Count == 0)
            {
                throw new ArgumentException("No projection is made in ExpressionCombiner'2", "combiner");
            }

            Expression <Func <TSource, TDestination> > expression = combiner.Compile();

            Select(stream, expression);
        }