Exemple #1
0
    public static string GetExperssion <T>(this IQueryable <T> items, IList <IFilterDescriptor> filter, FilterCompositionLogicalOperator opr = FilterCompositionLogicalOperator.And)
    {
        string q = "";

        if (filter.Is(typeof(FilterDescriptor)))
        {
            var list = filter.Cast <FilterDescriptor>();
            foreach (var i in list)
            {
                q += i.Operator.getOerationToString().Replace("y", i.Member).Replace("x", i.Value.ToString()) + " " + (list.Last().Value == i.Value ? " " : " " + opr.ToString() + " ");
            }
        }
        else if (filter.Is(typeof(CompositeFilterDescriptor)))
        {
            foreach (var i in filter.Cast <IFilterDescriptor>())
            {
                if (i.GetType() == typeof(CompositeFilterDescriptor))
                {
                    q +=
                        "(" +
                        items.GetExperssion(((CompositeFilterDescriptor)i).FilterDescriptors, ((CompositeFilterDescriptor)i).LogicalOperator)
                        + " ) " +
                        (filter.Cast <IFilterDescriptor>().Last() == ((CompositeFilterDescriptor)i) ? " " : " And ");
                }
                else if (i.GetType() == typeof(FilterDescriptor))
                {
                    q += ((FilterDescriptor)i).Operator.getOerationToString().Replace("y", ((FilterDescriptor)i).Member).Replace("x", ((FilterDescriptor)i).Value.ToString()) + " " + (filter.Cast <IFilterDescriptor>().Last() == ((FilterDescriptor)i) ? " " : " " + opr.ToString() + " ");
                }
            }
        }
        return(q);
    }
Exemple #2
0
 /// <summary>
 /// Renders a relationship operator
 /// </summary>
 /// <param name="builder"></param>
 /// <param name="relationship"></param>
 protected virtual void RelationshipOperator(StringBuilder builder, FilterCompositionLogicalOperator relationship)
 {
     builder.AppendFormat(" {0} ", relationship.ToString().ToLower());
 }