/// <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); }
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; } }