예제 #1
0
        protected virtual string GetExpression()
        {
            List <string> stringList = new List <string>();

            for (int index = 0; index < this.Count; ++index)
            {
                FilterDescriptor          filterDescriptor1 = this[index];
                CompositeFilterDescriptor filterDescriptor2 = filterDescriptor1 as CompositeFilterDescriptor;
                string str;
                if (filterDescriptor2 != null)
                {
                    foreach (FilterDescriptor filterDescriptor3 in (Collection <FilterDescriptor>)filterDescriptor2.FilterDescriptors)
                    {
                        if (!string.IsNullOrEmpty(filterDescriptor3.PropertyName))
                        {
                            this.owner.Columns.GetColumnByFieldName(filterDescriptor3.PropertyName);
                        }
                    }
                    str = CompositeFilterDescriptor.GetCompositeExpression(filterDescriptor2, new Function <FilterDescriptor, object>(this.FormatDescriptorValue));
                }
                else if (!string.IsNullOrEmpty(filterDescriptor1.PropertyName) && this.owner.Columns.GetColumnByFieldName(filterDescriptor1.PropertyName) != null)
                {
                    DateFilterDescriptor dateTimeFilterDescriptor = filterDescriptor1 as DateFilterDescriptor;
                    str = dateTimeFilterDescriptor == null?FilterDescriptor.GetExpression(filterDescriptor1, new Function <FilterDescriptor, object>(this.FormatDescriptorValue)) : DateFilterDescriptor.GetExpression(dateTimeFilterDescriptor);
                }
                else
                {
                    continue;
                }
                if (!string.IsNullOrEmpty(str))
                {
                    stringList.Add(str);
                }
            }
            return(string.Join(this.LogicalOperator == FilterLogicalOperator.And ? " AND " : " OR ", stringList.ToArray()));
        }