Exemplo n.º 1
0
        /// <summary>
        /// Converts the new invocation call into a select clause.
        /// </summary>
        /// <param name="newExpression">The new expression.</param>
        /// <returns></returns>
        public static SelectClause NewToSelectClause(System.Linq.Expressions.NewExpression newExpression)
        {
            var selectClause = new SelectClause();

            selectClause.IsDistinct     = false;
            selectClause.StreamSelector = StreamSelector.RSTREAM_ISTREAM_BOTH;
            selectClause.SelectList     = new List <SelectClauseElement>();

            foreach (var argExpression in newExpression.Arguments)
            {
                if (argExpression is MemberExpression)
                {
                    var memberExpression    = (MemberExpression)argExpression;
                    var propertyExpression  = MemberToSoda(memberExpression);
                    var selectClauseElement = new SelectClauseExpression(propertyExpression);
                    selectClause.SelectList.Add(selectClauseElement);
                }
                else
                {
                    throw new ArgumentException(
                              String.Format("Expression of type {0} is not supported", argExpression.NodeType));
                }
            }

            return(selectClause);
        }
Exemplo n.º 2
0
        override public void OnSelectClauseExpression(SelectClauseExpression node)
        {
            base.OnSelectClauseExpression(node);
            var v = node.BaseExpr;

            if (v is ReferenceExpression && ((ReferenceExpression)v).Name == _range.Name)
            {
                RemoveCurrentNode();
            }
            else
            {
                var lambda = MakeLambda(_range, node.BaseExpr);
                _query.Clauses.Add(MakeMethodCall("Select", lambda));
                _query.Ending = null;
            }
        }