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()); }