У меня есть objectListView в виде дерева, и я хочу отфильтровать список. Проблема в том, что у меня много флажков, и мне нужно условие И или ИЛИ.
Вот код, который я взял из примера проекта:
// Build a composite filter that unify the three possible filtering criteria
List<IModelFilter> filters = new List<IModelFilter>();
if (this.checkBoxHighPriority.Checked)
filters.Add(
new ModelFilter(delegate(object model)
{
return ((ServiceTask)model).Priority > 3;
}));
if (this.checkBoxIncomplete.Checked)
filters.Add(
new ModelFilter(
delegate(object model)
{
return ((ServiceTask)model).Status != ServiceTask.TaskStatus.Complete;
}));
if (!String.IsNullOrEmpty(this.textBoxFilter.Text))
filters.Add(
new TextMatchFilter(this.olvTasks, this.textBoxFilter.Text));
olvTasks.AdditionalFilter = filters.Count == 0 ? null : new CompositeAllFilter(filters);
Я могу изменить с CompositeAllFilter
на CompositeAnyFilter
, но я хочу комбинацию обоих:
Примерно так:
olvTasks.ModelFilter = new ModelFilter(delegate (object x)
{
var myNode = x as Node;
return x != null && ((myNode.Status == "0" || myNode.Status == "1" || myNode.Status == 2"|| myNode.Status == "4") && myNode.Breakdown == "True");
}
Если у меня всего 4-5 комбинированных блоков, это легко, но у меня есть 10 комбинированных блоков .
Как я могу сравнить фильтры?
Большое спасибо