/// <summary> /// 初始化 <see cref="SubqueryExpression"/> 类的新实例。 /// </summary> /// <param name="nodeType"></param> /// <param name="type"></param> /// <param name="select"></param> public SubqueryExpression(DbExpressionType nodeType, Type type, SelectExpression select) : base(nodeType, type) { Select = select; }
/// <summary> /// 使用子查询表达式初始化 <see cref="InExpression"/> 类的新实例。 /// </summary> /// <param name="expression">IN 左边的列表达式。</param> /// <param name="select">子查询表达式。</param> public InExpression(Expression expression, SelectExpression select) : base(DbExpressionType.In, typeof(bool), select) { Expression = expression; }
internal static SelectExpression SetOrderBy(this SelectExpression select, IEnumerable <OrderExpression> orderBy) { return(new SelectExpression(select.Alias, select.Columns, select.From, select.Where, orderBy, select.GroupBy, select.IsDistinct, select.Skip, select.Take, select.Segment, select.Having, select.IsReverse)); }
internal static SelectExpression SetWhere(this SelectExpression select, Expression where) { return(where != select.Where ? new SelectExpression(select.Alias, select.Columns, select.From, where, select.OrderBy, select.GroupBy, select.IsDistinct, select.Skip, select.Take, select.Segment, select.Having, select.IsReverse) : select); }
internal static SelectExpression SetDistinct(this SelectExpression select, bool isDistinct) { return(select.IsDistinct != isDistinct ? new SelectExpression(select.Alias, select.Columns, select.From, select.Where, select.OrderBy, select.GroupBy, isDistinct, select.Skip, select.Take, select.Segment, select.Having, select.IsReverse) : select); }
private static bool IsUniqueName(SelectExpression select, string name) { return(select.Columns.All(col => col.Name != name)); }
internal static SelectExpression SetColumns(this SelectExpression select, IEnumerable <ColumnDeclaration> columns) { return(new SelectExpression(select.Alias, columns.OrderBy(c => c.Name), select.From, select.Where, select.OrderBy, select.GroupBy, select.IsDistinct, select.Skip, select.Take, select.Segment, select.Having, select.IsReverse)); }