コード例 #1
0
        private string Base(Expression exp)
        {
            var cached = (CachedExpression)exp;

            if (cached.Sql != null)
            {
                return(cached.Sql);
            }
            cached.Sql = exp switch
            {
                UnionExpression e => Union(e),
                SelectExpression e => Select(e),
                WhereExpression e => Where(e),
                MaxExpression e => Max(e),
                MinExpression e => Min(e),
                SumExpression e => Sum(e),
                CountExpression e => Count(e),
                TakeExpression e => Take(e),
                SkipExpression e => Skip(e),
                FirstExpression e => First(e),
                DistinctExpression e => Distinct(e),
                OrderByExpression e => OrderBy(e),
                OrderByDescendingExpression e => OrderByDescending(e),
                _ => throw new InvalidEnumArgumentException()
            };
            return(cached.Sql);
        }
コード例 #2
0
        private static Expression HandleMin(HandlerContext handlerContext)
        {
            var minExpression
                = new MinExpression(handlerContext.SelectExpression.Projection.Single());

            handlerContext.SelectExpression.SetProjectionExpression(minExpression);

            return((Expression)_transformClientExpressionMethodInfo
                   .MakeGenericMethod(minExpression.Type)
                   .Invoke(null, new object[] { handlerContext }));
        }
コード例 #3
0
ファイル: TestMath.cs プロジェクト: weihuajiang/WPF-Blocky
        public Completion Min(object a, object b)
        {
            ExecutionEnvironment e = new ExecutionEnvironment();

            e.RegisterValue("a", a);
            e.RegisterValue("b", b);
            MinExpression abs = new MinExpression();

            abs.Args[0] = new Identifier("a");
            abs.Args[1] = new Identifier("b");
            return(abs.Execute(e));
        }
コード例 #4
0
        public virtual Expression VisitMinExpression(MinExpression minExpression)
        {
            Check.NotNull(minExpression, "minExpression");

            _sql.Append("MIN(");

            VisitExpression(minExpression.ColumnExpression);

            _sql.Append(")");

            return(minExpression);
        }
コード例 #5
0
        public virtual Expression VisitMin(MinExpression minExpression)
        {
            Check.NotNull(minExpression, nameof(minExpression));

            _sql.Append("MIN(");

            Visit(minExpression.Expression);

            _sql.Append(")");

            return(minExpression);
        }
コード例 #6
0
        public virtual Expression VisitMin(MinExpression minExpression)
        {
            Check.NotNull(minExpression, nameof(minExpression));

            _relationalCommandBuilder.Append("MIN(");

            Visit(minExpression.Expression);

            _relationalCommandBuilder.Append(")");

            return(minExpression);
        }
        private static Expression HandleMin(HandlerContext handlerContext)
        {
            if (!handlerContext.QueryModelVisitor.RequiresClientProjection)
            {
                var minExpression
                    = new MinExpression(handlerContext.SelectExpression.Projection.Single());

                handlerContext.SelectExpression.SetProjectionExpression(minExpression);

                return((Expression)_transformClientExpressionMethodInfo
                       .MakeGenericMethod(minExpression.Type)
                       .Invoke(null, new object[] { handlerContext }));
            }

            return(handlerContext.EvalOnClient());
        }
コード例 #8
0
 private string Min(MinExpression exp) => $"SELECT MIN({Secondary.Serialize(exp.Selector.Body)}) FROM ({Serialize(exp.Sub)}) AS this";
コード例 #9
0
        public override bool Equals(QueryExpression other)
        {
            if (!(other is TimeSeriesBetweenExpression be))
            {
                return(false);
            }

            return(Source.Equals(be.Source) && MaxExpression.Equals(be.MaxExpression) && MinExpression.Equals(be.MinExpression));
        }
コード例 #10
0
 public override string GetText(IndexQueryServerSide parent)
 {
     return(Source.GetText(parent) + " between " + MinExpression.GetText(parent) + " and " + MaxExpression.GetText(parent));
 }