Esempio n. 1
0
        public RightOuterJoinIterator(Iterator iterator, RightOuterJoin rightOuterJoin)
        {
            this._iterator       = iterator;
            this._rightOuterJoin = rightOuterJoin;

            //TODO get RowCount from database.
        }
Esempio n. 2
0
        public Join <TDto> RightOuterJoin(string tableName, string tableAlias = null, string dbSchema = "dbo")
        {
            var rightOuterJoin = new RightOuterJoin <TDto>(_spry, this, new SprySelectTable <TDto>(_spry, tableName, tableAlias, dbSchema));

            _joins.Add(rightOuterJoin);
            return(rightOuterJoin);
        }
Esempio n. 3
0
        /// <summary>
        /// Generates the text for a RightOuterJoin builder.
        /// </summary>
        /// <param name="item">The RightOuterJoin builder to generate the text for.</param>
        protected internal override void VisitRightOuterJoin(RightOuterJoin item)
        {
            StringBuilder joinBuilder = new StringBuilder("RIGHT ");

            if (options.VerboseOuterJoin)
            {
                joinBuilder.Append("OUTER ");
            }
            joinBuilder.Append("JOIN");
            visitFilteredJoin(item, joinBuilder.ToString());
        }
Esempio n. 4
0
        internal static bool TryParseSources(ScriptParser Parser, out SourceDefinition Source)
        {
            if (!TryParseSource(Parser, out Source))
            {
                return(false);
            }

            while (true)
            {
                string s = Parser.PeekNextToken().ToUpper();

                switch (s)
                {
                case ",":
                    Parser.NextToken();
                    if (!TryParseSource(Parser, out SourceDefinition Source2))
                    {
                        return(false);
                    }

                    Source = new CrossJoin(Source, Source2, Source.Start, Parser.Position - Source.Start, Parser.Expression);
                    break;

                case "INNER":
                case "JOIN":
                    Parser.NextToken();

                    if (s == "INNER")
                    {
                        if (Parser.NextToken().ToUpper() != "JOIN")
                        {
                            return(false);
                        }
                    }

                    if (!TryParseSource(Parser, out Source2))
                    {
                        return(false);
                    }

                    ScriptNode Conditions = ParseJoinConditions(Parser);
                    Source = new InnerJoin(Source, Source2, Conditions, Source.Start, Parser.Position - Source.Start, Parser.Expression);
                    break;

                case "LEFT":
                    Parser.NextToken();

                    switch (Parser.NextToken().ToUpper())
                    {
                    case "JOIN":
                        break;

                    case "OUTER":
                        if (Parser.NextToken().ToUpper() != "JOIN")
                        {
                            return(false);
                        }
                        break;

                    default:
                        return(false);
                    }

                    if (!TryParseSource(Parser, out Source2))
                    {
                        return(false);
                    }

                    Conditions = ParseJoinConditions(Parser);
                    Source     = new LeftOuterJoin(Source, Source2, Conditions, Source.Start, Parser.Position - Source.Start, Parser.Expression);
                    break;

                case "RIGHT":
                    Parser.NextToken();

                    switch (Parser.NextToken().ToUpper())
                    {
                    case "JOIN":
                        break;

                    case "OUTER":
                        if (Parser.NextToken().ToUpper() != "JOIN")
                        {
                            return(false);
                        }
                        break;

                    default:
                        return(false);
                    }

                    if (!TryParseSource(Parser, out Source2))
                    {
                        return(false);
                    }

                    Conditions = ParseJoinConditions(Parser);
                    Source     = new RightOuterJoin(Source, Source2, Conditions, Source.Start, Parser.Position - Source.Start, Parser.Expression);
                    break;

                case "FULL":
                    Parser.NextToken();

                    switch (Parser.NextToken().ToUpper())
                    {
                    case "JOIN":
                        break;

                    case "OUTER":
                        if (Parser.NextToken().ToUpper() != "JOIN")
                        {
                            return(false);
                        }
                        break;

                    default:
                        return(false);
                    }

                    if (!TryParseSource(Parser, out Source2))
                    {
                        return(false);
                    }

                    Conditions = ParseJoinConditions(Parser);
                    Source     = new FullOuterJoin(Source, Source2, Conditions, Source.Start, Parser.Position - Source.Start, Parser.Expression);
                    break;

                case "OUTER":
                    Parser.NextToken();

                    if (Parser.NextToken().ToUpper() != "JOIN")
                    {
                        return(false);
                    }

                    if (!TryParseSource(Parser, out Source2))
                    {
                        return(false);
                    }

                    Conditions = ParseJoinConditions(Parser);
                    Source     = new FullOuterJoin(Source, Source2, Conditions, Source.Start, Parser.Position - Source.Start, Parser.Expression);
                    break;

                default:
                    return(true);
                }
            }
        }
 private void AddJoin(RightOuterJoin item)
 {
     this.IsSingleSource = false;
     throw new NotSupportedException();
 }
 protected override void VisitRightOuterJoin(RightOuterJoin item)
 {
     this.AddJoin(item);
 }
 private void AddJoin(RightOuterJoin item)
 {
     throw new NotSupportedException();
 }
Esempio n. 8
0
 => LeftOuterJoin(firsts, seconds, equality).Concat(RightOuterJoin(firsts, seconds, equality));