/// <summary> /// Translate an ExpandedReferenceSelectItem /// </summary> /// <param name="item">the item to Translate</param> /// <returns>Defined by the implementer</returns> public override string Translate(ExpandedReferenceSelectItem item) { NodeToStringBuilder nodeToStringBuilder = new NodeToStringBuilder(); string currentExpandClause = String.Join("/", item.PathToNavigationProperty.WalkWith(PathSegmentToStringTranslator.Instance).ToArray()); string res = string.Empty; if (item.FilterOption != null) { res += "$filter=" + nodeToStringBuilder.TranslateFilterClause(item.FilterOption); } if (item.OrderByOption != null) { res += string.IsNullOrEmpty(res) ? null : ";"; res += "$orderby=" + nodeToStringBuilder.TranslateOrderByClause(item.OrderByOption); } if (item.TopOption != null) { res += string.IsNullOrEmpty(res) ? null : ";"; res += "$top=" + item.TopOption.ToString(); } if (item.SkipOption != null) { res += string.IsNullOrEmpty(res) ? null : ";"; res += "$skip=" + item.SkipOption.ToString(); } if (item.CountOption != null) { res += string.IsNullOrEmpty(res) ? null : ";"; res += "$count"; res += ExpressionConstants.SymbolEqual; if (item.CountOption == true) { res += ExpressionConstants.KeywordTrue; } else { res += ExpressionConstants.KeywordFalse; } } if (item.SearchOption != null) { res += string.IsNullOrEmpty(res) ? null : ";"; res += "$search"; res += ExpressionConstants.SymbolEqual; res += nodeToStringBuilder.TranslateSearchClause(item.SearchOption); } // nested $compute= if (item.ComputeOption != null) { res += string.IsNullOrEmpty(res) ? null : ";"; res += "$compute"; res += ExpressionConstants.SymbolEqual; res += nodeToStringBuilder.TranslateComputeClause(item.ComputeOption); } // nested $apply= if (item.ApplyOption != null) { res += string.IsNullOrEmpty(res) ? null : ";"; var applyClauseToStringBuilder = new ApplyClauseToStringBuilder(); res += applyClauseToStringBuilder.TranslateApplyClause(item.ApplyOption); } return(string.Concat(currentExpandClause, string.IsNullOrEmpty(res) ? null : string.Concat(ExpressionConstants.SymbolOpenParen, res, ExpressionConstants.SymbolClosedParen))); }
/// <summary> /// Translate a PathSelectItem /// </summary> /// <param name="item">the item to Translate</param> /// <returns>Defined by the implementer</returns> public override string Translate(PathSelectItem item) { NodeToStringBuilder nodeToStringBuilder = new NodeToStringBuilder(); string res = string.Empty; if (item.FilterOption != null) { res += "$filter=" + nodeToStringBuilder.TranslateFilterClause(item.FilterOption); } if (item.OrderByOption != null) { res += string.IsNullOrEmpty(res) ? null : ";"; res += "$orderby=" + nodeToStringBuilder.TranslateOrderByClause(item.OrderByOption); } if (item.TopOption != null) { res += string.IsNullOrEmpty(res) ? null : ";"; res += "$top=" + item.TopOption.ToString(); } if (item.SkipOption != null) { res += string.IsNullOrEmpty(res) ? null : ";"; res += "$skip=" + item.SkipOption.ToString(); } if (item.CountOption != null) { res += string.IsNullOrEmpty(res) ? null : ";"; res += "$count"; res += ExpressionConstants.SymbolEqual; if (item.CountOption == true) { res += ExpressionConstants.KeywordTrue; } else { res += ExpressionConstants.KeywordFalse; } } if (item.SearchOption != null) { res += string.IsNullOrEmpty(res) ? null : ";"; res += "$search"; res += ExpressionConstants.SymbolEqual; res += nodeToStringBuilder.TranslateSearchClause(item.SearchOption); } if (item.ComputeOption != null) { res += string.IsNullOrEmpty(res) ? null : ";"; res += "$compute"; res += ExpressionConstants.SymbolEqual; res += nodeToStringBuilder.TranslateComputeClause(item.ComputeOption); } return(string.IsNullOrEmpty(res) ? null : string.Concat(ExpressionConstants.SymbolOpenParen, res, ExpressionConstants.SymbolClosedParen)); }