public static Expression In(Expression element, object[] values, bool isPostgres) { var nominate = DbExpressionNominator.FullNominate(element) !; if (nominate.RemoveUnNullify() is ToDayOfWeekExpression dowe) { if (isPostgres) { var sqlWeekDays = values.Cast <DayOfWeek>() .Select(a => (object)(int)a) .ToArray(); return(InExpression.FromValues(dowe.Expression, sqlWeekDays)); } else { byte dateFirs = ((SqlServerConnector)Connector.Current).DateFirst; var sqlWeekDays = values.Cast <DayOfWeek>() .Select(a => (object)ToDayOfWeekExpression.ToSqlWeekDay(a, dateFirs)) .ToArray(); return(InExpression.FromValues(dowe.Expression, sqlWeekDays)); } } else { return(InExpression.FromValues(nominate, values)); } }
protected internal virtual Expression VisitToDayOfWeek(ToDayOfWeekExpression toDayOfWeek) { var exp = Visit(toDayOfWeek.Expression); if (exp == toDayOfWeek.Expression) { return(toDayOfWeek); } return(new ToDayOfWeekExpression(exp)); }
public static Expression In(Expression element, object[] values) { var nominate = DbExpressionNominator.FullNominate(element) !; if (nominate is ToDayOfWeekExpression dowe) { byte dateFirs = ToDayOfWeekExpression.DateFirst.Value.Item1; var sqlWeekDays = values.Cast <DayOfWeek>() .Select(a => (object)ToDayOfWeekExpression.ToSqlWeekDay(a, dateFirs)) .ToArray(); return(InExpression.FromValues(dowe.Expression, sqlWeekDays)); } else { return(InExpression.FromValues(nominate, values)); } }
protected internal override Expression VisitToDayOfWeek(ToDayOfWeekExpression toDayOfWeek) { var result = this.Visit(toDayOfWeek.Expression); return(Expression.Call(ToDayOfWeekExpression.miToDayOfWeek, result, Expression.Constant(ToDayOfWeekExpression.DateFirst.Value.Item1, typeof(byte)))); }