Beispiel #1
0
        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));
            }
        }
Beispiel #2
0
        protected internal virtual Expression VisitToDayOfWeek(ToDayOfWeekExpression toDayOfWeek)
        {
            var exp = Visit(toDayOfWeek.Expression);

            if (exp == toDayOfWeek.Expression)
            {
                return(toDayOfWeek);
            }

            return(new ToDayOfWeekExpression(exp));
        }
Beispiel #3
0
        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))));
            }