Exemple #1
0
        SubQueryContextInfo GetSubQueryContext(IBuildContext context, MethodCallExpression expr)
        {
            List <SubQueryContextInfo> sbi;

            if (!_buildContextCache.TryGetValue(context, out sbi))
            {
                _buildContextCache[context] = sbi = new List <SubQueryContextInfo>();
            }

            foreach (var item in sbi)
            {
                if (expr.EqualsTo(item.Method, new Dictionary <Expression, QueryableAccessor>()))
                {
                    return(item);
                }
            }

            var ctx = GetSubQuery(context, expr);

            var info = new SubQueryContextInfo {
                Method = expr, Context = ctx
            };

            sbi.Add(info);

            return(info);
        }