private bool TryHandleContains(SubQueryExpression subquery, ContainsResultOperator ro) { switch (subquery.QueryModel.MainFromClause.FromExpression) { case ConstantExpression expr: if (!(expr.Value is IList list)) { return(false); } CurrentExpression.Add("IN"); Visit(ro.Item); var opList = new List <object> { "[]" }; opList.AddRange(list.Cast <object>()); CurrentExpression.Add(opList); return(true); case MemberExpression expr: var last = _currentExpression; CurrentExpression.Add("ARRAY_CONTAINS()"); Visit(expr); Visit(ro.Item); _currentExpression = last; return(true); } return(false); }
private void BackButton_Click(object sender, RoutedEventArgs e) { if (Display != null && Display.Length > 0) { // On supprime le dernier caractère du calcul Display = Display.Remove(Display.Length - 1); CurrentExpression = CurrentExpression.Remove(CurrentExpression.Length - 2); } }
private void AssignOperatorToExpression(string oprtr) { if (DisplayText.EndWithAny(Models.Calculator.OPERATORS)) { CurrentExpression.Remove(CurrentExpression.Length - 1, 1); } CurrentExpression.Append(oprtr); DisplayText = CurrentExpression.ToString(); }
private void OnEqualPressCommandExecute(object p) { if (CurrentExpression.Content != "") { CurrentExpression.CalculateResult(); ExpressionHistory.Add(CurrentExpression); OnPropertyChanged("CurrentExpression"); CurrentExpression = new MathExpression(); } }
protected override Expression VisitMember(MemberExpression node) { var sb = new StringBuilder(); var currentNode = (Expression)node; while (currentNode.NodeType == ExpressionType.MemberAccess || currentNode.NodeType == ExpressionType.Call) { if (currentNode.NodeType == ExpressionType.Call) { var ce = (currentNode as MethodCallExpression); if (ce.Method.Name != "get_Item") { return(base.VisitMember(node)); } var me = ce.Object as MemberExpression; var index = ((ConstantExpression)ce.Arguments[0]).Value; sb.Insert(0, $".{me.Member.Name}[{index}]"); currentNode = me.Expression; } else { var me = (currentNode as MemberExpression); var mappingProperty = me.Member.GetCustomAttribute(typeof(JsonPropertyAttribute)) as JsonPropertyAttribute; var name = mappingProperty?.PropertyName ?? me.Member.Name; sb.Insert(0, $".{name}"); currentNode = me.Expression; } } if (IncludeDbNames && currentNode is QuerySourceReferenceExpression sourceRef) { sb.Insert(0, $".{sourceRef.ReferencedQuerySource.ItemName}"); } if (_currentMode == Mode.AllOperator) { sb.Remove(0, 1); CurrentExpression.Add(new[] { "?X", sb.ToString() }); } else { CurrentExpression.Add(new[] { sb.ToString() }); } return(node); }
private void OnDeletePressCommandExecute(object p) { CurrentExpression.Delete(); OnPropertyChanged("CurrentExpression"); }
private void OnClearPressCommandExecute(object p) { CurrentExpression.Clear(); OnPropertyChanged("CurrentExpression"); }
private void OnButtonPressCommandExecute(object p) { CurrentExpression.AddChar(p); OnPropertyChanged("CurrentExpression"); }
private void HandleSequence(MethodCallExpression expression) { CurrentExpression.Add(new[] { "._sequence" }); }
private void HandleId(MethodCallExpression expression) { CurrentExpression.Add(new[] { "._id" }); }