public SqlQueryExpression Build() { var query = new SqlQueryExpression(items.Select(x => x.Build())); if (querySources.Count > 0) { foreach (var source in querySources) { source.BuildIn(query); } } query.Distinct = distinct; if (groupByExpressions.Count > 0) { query.GroupBy = groupByExpressions.AsEnumerable(); } if (groupMax != null) query.GroupMax = groupMax; if (filterType == WhereFilter) { query.WhereExpression = filterExpression; } else if (filterType == HavingFilter) { query.HavingExpression = filterExpression; } return query; }
public static ISelectStatementBuilder Query(this ISelectStatementBuilder builder, Action<IQueryExpressionBuilder> query) { var queryBuilder = new QueryExpressionBuilder(); query(queryBuilder); return builder.Query(queryBuilder.Build()); }