Beispiel #1
0
        internal LinqOpChain BuildChain()
        {
            // PATTERN (Rule#1):
            //	q1 into x1 (q2 into x2 ( ... (qm into xm q)...))
            //
            // TRANSLATION:
            //	from x1 in ( q1 ), x2 in ( q2 ), ...,  xm in ( qm )
            //  q

            List <Generator> generators = new List <Generator>();

            QueryBody query = this;

            while (query.into != null)
            {
                LinqOpChain subquery_chain = query.BuildSingleQueryChain(new List <Generator>());

                generators.Add(new Generator(Position.Invalid, subquery_chain, query.into.KeyVar, query.into.ValueVar));
                query = query.into.NextQuery;
            }

            return(query.BuildSingleQueryChain(generators));
        }