筛选条件 OR 而不是 AND C# WPF
Filter Criteria OR Instead of AND C# WPF
我目前正在根据一组复选框的选择来过滤 DataGrid。条件被添加到条件列表中,DataGrid 绑定到的 ICollectionView 被适当地过滤。
如果我想在 'AND' 基础上进行过滤,这可以正常工作。每个工作都有一个与之关联的员工,但目前过滤器通过说 show jobs where job.employee = employee 1 AND job.employee = employee2
来工作。这是目前的代码,它将像这样过滤;
criteria.Clear();
if (yourJobsCheckBox.IsChecked == true)
{
criteria.Add(new Predicate<JobModel>(x => x.ITName == yourJobsCheckBox.Tag.ToString()));
}
if (danJobsCheckBox.IsChecked == true)
{
criteria.Add(new Predicate<JobModel>(x => x.ITName == danJobsCheckBox.Tag.ToString()));
}
if (emilyJobsCheckBox.IsChecked == true)
{
criteria.Add(new Predicate<JobModel>(x => x.ITName == emilyJobsCheckBox.Tag.ToString()));
}
if (adamJobsCheckBox.IsChecked == true)
{
criteria.Add(new Predicate<JobModel>(x => x.ITName == adamJobsCheckBox.Tag.ToString()));
}
JobModel job = o as JobModel;
bool isIn = true;
if (criteria.Count() == 0)
return isIn;
isIn = criteria.TrueForAll(x => x(job));
return isIn;
目前正在按ITName = tag1 AND ITName = tag2
等职位过滤。等等。一份工作永远不会有超过一名员工分配给它,因此一旦用户点击多个复选框,就不可避免地不会显示任何工作。
如何更改我的过滤器,使其改为在 'OR' 基础上进行过滤?例如show jobs where job.employee = employee 1 OR job.employee = employee 2
你试过了吗"Any"? "Any" 收到谓词。它确定集合中的任何元素是否符合特定条件。
我目前正在根据一组复选框的选择来过滤 DataGrid。条件被添加到条件列表中,DataGrid 绑定到的 ICollectionView 被适当地过滤。
如果我想在 'AND' 基础上进行过滤,这可以正常工作。每个工作都有一个与之关联的员工,但目前过滤器通过说 show jobs where job.employee = employee 1 AND job.employee = employee2
来工作。这是目前的代码,它将像这样过滤;
criteria.Clear();
if (yourJobsCheckBox.IsChecked == true)
{
criteria.Add(new Predicate<JobModel>(x => x.ITName == yourJobsCheckBox.Tag.ToString()));
}
if (danJobsCheckBox.IsChecked == true)
{
criteria.Add(new Predicate<JobModel>(x => x.ITName == danJobsCheckBox.Tag.ToString()));
}
if (emilyJobsCheckBox.IsChecked == true)
{
criteria.Add(new Predicate<JobModel>(x => x.ITName == emilyJobsCheckBox.Tag.ToString()));
}
if (adamJobsCheckBox.IsChecked == true)
{
criteria.Add(new Predicate<JobModel>(x => x.ITName == adamJobsCheckBox.Tag.ToString()));
}
JobModel job = o as JobModel;
bool isIn = true;
if (criteria.Count() == 0)
return isIn;
isIn = criteria.TrueForAll(x => x(job));
return isIn;
目前正在按ITName = tag1 AND ITName = tag2
等职位过滤。等等。一份工作永远不会有超过一名员工分配给它,因此一旦用户点击多个复选框,就不可避免地不会显示任何工作。
如何更改我的过滤器,使其改为在 'OR' 基础上进行过滤?例如show jobs where job.employee = employee 1 OR job.employee = employee 2
你试过了吗"Any"? "Any" 收到谓词。它确定集合中的任何元素是否符合特定条件。