Exemplo n.º 1
0
 [Conditional("TRACE_PARSING")] public static void WriteLine(LambdaInfo lambda)
 {
     WriteLineInternal("lambda", lambda);
 }
Exemplo n.º 2
0
 [Conditional("TRACE_PARSING")] public static void WriteLine(string prefix, LambdaInfo lambda)
 {
     WriteLineInternal(prefix, lambda);
 }
Exemplo n.º 3
0
		[Conditional("TRACE_PARSING")] public static void WriteLine(               LambdaInfo    lambda) { WriteLineInternal("lambda", lambda); }
Exemplo n.º 4
0
		[Conditional("TRACE_PARSING")] public static void WriteLine(string prefix, LambdaInfo    lambda) { WriteLineInternal(prefix,   lambda); }
Exemplo n.º 5
0
		static void WriteLineInternal(string prefix, LambdaInfo lambda)
		{
			if (lambda != null)
				Debug.WriteLine(prefix + " - " + lambda.Body + " : Expression." + lambda.Body.GetType().Name, GetMethodName());
		}
Exemplo n.º 6
0
 public override QueryField GetBaseField(LambdaInfo lambda, Expression expr)
 {
     return(BaseQuery.GetBaseField(lambda, expr));
 }
Exemplo n.º 7
0
            public override QueryField GetField(LambdaInfo lambda, Expression expr, int currentMember)
            {
                switch (expr.NodeType)
                {
                case ExpressionType.Parameter:
                    for (var i = 0; i < Lambda.Parameters.Length; i++)
                    {
                        if (Lambda.Parameters[i] == expr)
                        {
                            return(Sources[i]);
                        }
                    }

                    return(null);

                //throw new InvalidOperationException();

                case ExpressionType.MemberAccess:
                {
                    var ma = (MemberExpression)expr;

                    if (ma.Expression != null)
                    {
                        if (ma.Expression.NodeType == ExpressionType.Parameter)
                        {
                            return(GetField(ma.Member));
                        }

                        if (ma.Expression.NodeType == ExpressionType.Constant)
                        {
                            break;
                        }
                    }

                    var list = GetMemberList(lambda, expr);
                    if (list == null || list.Count == 0)
                    {
                        return(null);
                    }

                    var field = GetField(list, currentMember);

                    if (field != null)
                    {
                        return(field);
                    }

                    break;
                }
                }

                foreach (var field in Fields)
                {
                    if (field is ExprColumn && ((ExprColumn)field).Expr == expr)
                    {
                        return(field);
                    }
                }

                return(null);
            }
Exemplo n.º 8
0
            public override QueryField GetField(LambdaInfo lambda, Expression expr, int currentMember)
            {
                if (expr.NodeType == ExpressionType.MemberAccess)
                {
                    var ma = (MemberExpression)expr;

                    if (ma.Expression != null)
                    {
                        if (ma.Expression.Type == ObjectType || currentMember > 0)
                        {
                            var list = GetMemberList(lambda, expr);

                            if (list == null)
                            {
                                return(null);
                            }

                            if (list.Count > 1)
                            {
                                var field = GetField(list, currentMember);
                                if (field != null)
                                {
                                    return(field);
                                }
                            }

                            return(GetField(ma.Member));
                        }

                        // Check for associations and 'InnerObject.Field' case.
                        //
                        var name = ma.Member.Name;
                        var e    = ma.Expression;

                        while (e != null)
                        {
                            if (e.NodeType == ExpressionType.MemberAccess)
                            {
                                ma = (MemberExpression)e;

                                if (ma.Expression == null)
                                {
                                    break;
                                }

                                name = ma.Member.Name + '.' + name;

                                if (ma.Expression.Type == ObjectType)
                                {
                                    Column col;
                                    if (_columns.TryGetValue(name, out col))
                                    {
                                        return(col);
                                    }

                                    var tbl = GetAssociation(ma.Member);
                                    if (tbl != null)
                                    {
                                        return(tbl.GetField(lambda, expr, currentMember + 1));
                                    }
                                }

                                e = ma.Expression;
                            }
                            else
                            {
                                break;
                            }
                        }
                    }
                }

                return(null);
            }
Exemplo n.º 9
0
 public abstract QueryField       GetField(LambdaInfo lambda, Expression expr, int currentMember);