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