예제 #1
0
        /// <summary>
        /// Convert to the fetch XML.
        /// </summary>
        /// <param name="filter">The filter.</param>
        /// <returns></returns>
        public static string ToFetchXml(this FilterExpression filter)
        {
            var builder = new StringBuilder();

            if (!filter.IsEmpty())
            {
                builder.AppendFormat("<filter type='{0}'>", filter.FilterOperator.ToString().ToLower());

                if (filter.Conditions != null)
                {
                    foreach (var condition in filter.Conditions)
                    {
                        if (condition != null && !condition.IsEmpty())
                        {
                            builder.AppendFormat("<condition attribute='{0}' operator='{1}' value='{2}'/>",
                                                 condition.AttributeName,
                                                 operators.ContainsKey(condition.Operator)
                                             ? operators[condition.Operator]
                                             : condition.Operator.ToString().ToLower(),
                                                 condition.Values[0]);
                        }
                    }
                }

                if (filter.Filters != null)
                {
                    builder.Append(filter.Filters.ToFetchXml());
                }

                builder.Append("</filter>");
            }
            return(builder.ToString());
        }