Exemplo n.º 1
0
        /// <inheritdoc/>
        protected override SqlProvider VisitDistinct(DistinctProvider provider)
        {
            var source = Compile(provider.Source);

            var       sourceSelect = source.Request.Statement;
            SqlSelect query;

            if (!sourceSelect.Limit.IsNullReference() || !sourceSelect.Offset.IsNullReference())
            {
                var queryRef = SqlDml.QueryRef(sourceSelect);
                query = SqlDml.Select(queryRef);
                query.Columns.AddRange(queryRef.Columns.Cast <SqlColumn>());
            }
            else
            {
                query = sourceSelect.ShallowClone();
            }
            query.Distinct = true;
            return(CreateProvider(query, provider, source));
        }
Exemplo n.º 2
0
 /// <summary>
 /// Compiles <see cref="DistinctProvider"/>.
 /// </summary>
 /// <param name="provider">Distinct provider.</param>
 protected abstract TResult VisitDistinct(DistinctProvider provider);