コード例 #1
0
        public override void VisitJoinClause(JoinClause joinClause, QueryModel queryModel, int index)
        {
            if (!_query.TryGetValue("FROM", out List <Dictionary <string, object> > fromList))
            {
                var mainDb = queryModel.MainFromClause.ItemName;
                fromList = new List <Dictionary <string, object> > {
                    new Dictionary <string, object> {
                        ["as"] = mainDb
                    }
                };
                _query["FROM"] = fromList;
            }

            var innerPath = LiteCoreSelectExpressionVisitor.GetJsonExpression(joinClause.InnerKeySelector, true)[0];
            var outerPath = LiteCoreSelectExpressionVisitor.GetJsonExpression(joinClause.OuterKeySelector, true)[0];


            fromList.Add(new Dictionary <string, object>
            {
                ["as"] = joinClause.ItemName,
                ["on"] = new[] { "=", outerPath, innerPath }
            });

            base.VisitJoinClause(joinClause, queryModel, index);
        }
コード例 #2
0
        public override void VisitSelectClause(SelectClause selectClause, QueryModel queryModel)
        {
            var visitor = new LiteCoreSelectExpressionVisitor(queryModel.BodyClauses.Count > 1);

            visitor.Visit(selectClause.Selector);
            _query["WHAT"] = visitor.GetJsonExpression();
            SelectResult   = visitor.SelectResult;

            base.VisitSelectClause(selectClause, queryModel);
        }