コード例 #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);
                }
コード例 #2
0
            internal DbExpression Project(DbExpressionBinding input, DbExpression projection)
            {
                OrderByLifterBase lifter = GetLifter(input.Expression);

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