Exemple #1
0
                internal virtual DbExpression OfType(TypeUsage type)
                {
                    // s.OfType<T> is normally translated to s.Filter(e => e is T).Project(e => e as T)
                    DbExpressionBinding rootBinding   = _root.BindAs(_aliasGenerator.Next());
                    DbExpression        filter        = this.Filter(rootBinding.Filter(rootBinding.Variable.IsOf(type)));
                    OrderByLifterBase   filterLifter  = GetLifter(filter, _aliasGenerator);
                    DbExpressionBinding filterBinding = filter.BindAs(_aliasGenerator.Next());
                    DbExpression        project       = filterLifter.Project(filterBinding.Project(filterBinding.Variable.TreatAs(type)));

                    return(project);
                }
Exemple #2
0
 private OrderByLifterBase GetLifter(DbExpression root)
 {
     return(OrderByLifterBase.GetLifter(root, _aliasGenerator));
 }
Exemple #3
0
            internal DbExpression Limit(DbExpression argument, DbExpression limit)
            {
                OrderByLifterBase lifter = GetLifter(argument);

                return(lifter.Limit(limit));
            }
Exemple #4
0
            internal DbExpression Skip(DbExpressionBinding input, DbExpression skipCount)
            {
                OrderByLifterBase lifter = GetLifter(input.Expression);

                return(lifter.Skip(skipCount));
            }
Exemple #5
0
            internal DbExpression OfType(DbExpression argument, TypeUsage type)
            {
                OrderByLifterBase lifter = GetLifter(argument);

                return(lifter.OfType(type));
            }
Exemple #6
0
            internal DbExpression Filter(DbExpressionBinding input, DbExpression predicate)
            {
                OrderByLifterBase lifter = GetLifter(input.Expression);

                return(lifter.Filter(input.Filter(predicate)));
            }
Exemple #7
0
            internal DbExpression Project(DbExpressionBinding input, DbExpression projection)
            {
                OrderByLifterBase lifter = GetLifter(input.Expression);

                return(lifter.Project(input.Project(projection)));
            }