public void MapTo <T>(T filter, bool keepSub = false) where T : IQueryFilter { if (filter != null) { filter.Field = Field; filter.Property = Property; filter.Value = Value; filter.Method = Method; filter.SubFilters = new List <IQueryFilter>(); if (keepSub && typeof(T) == GetType()) { SubFilters.ForEach(item => filter.SubFilters.Add(item)); } else { SubFilters.ForEach(item => filter.SubFilters.Add(item.ConvertTo <T>())); } } }
public bool MeetsFilter(IRecord record) { var result = true; if (ConditionOperator == FilterOperator.Or) { result = (!Conditions.Any() && !SubFilters.Any()) || Conditions.Any(c => c.MeetsCondition(record)) || SubFilters.Any(f => f.MeetsFilter(record)); } else { result = Conditions.All(c => c.MeetsCondition(record)) && SubFilters.All(f => f.MeetsFilter(record)); } return(result); }
public void Sort() { Files.Sort(); SubFilters.Sort(); }
public void Add(Filter filter) { SubFilters.Add(filter); filter.Parent = this; }
public GroupFilter this[string name] { get { return(SubFilters?.FirstOrDefault(t => string.Equals(t.GroupName, name, StringComparison.CurrentCultureIgnoreCase))); } }