c # wpf фильтр список в заявлении - PullRequest
1 голос
/ 14 июля 2011

Я работаю с WPF и c #.У меня есть список объектов.Пример: List<Employee>, а класс сотрудника имеет свойство departmentID_A и departmentID_B.У пользователя есть список checkbox с названием отдела для фильтрации списка.Я хочу отфильтровать список по «заявлению» примерно так: EmployeeList.Find(p => p.departmentID_A in (1, 2, 3)); Есть ли способ сделать это?

Ответы [ 2 ]

1 голос
/ 14 июля 2011

Если ваш фильтр содержит много элементов, вы должны использовать

var employees = new List<Employee>();
var filter = new HashSet<int>() { 1, 2, 3, 4 };

var result = from i in employees
             where filter.Contains(i.DepartmentID_B)
             select i;

Обратите внимание, что запрос LINQ возвращает IEnumerable. Он не фильтрует список на месте. Если вам нужен список или массив, вы можете вызвать ToList() или ToArray() для вашего результата, и вы можете использовать чистые вызовы функций:

var employees = new List<Employee>();
var filter = new HashSet<int>() { 1, 2, 3, 4 };

var result = employees.Where(x => filter.Contains(x.DepartmentID_B));
0 голосов
/ 14 июля 2011

Попробуйте что-то вроде этого:

        List<Employee> employees = new List<Employee>();
        List<int> filter = new List<int>() { 1, 2, 3, 4 };

        var result = (from i in employees
                      where filter.Contains(i.DepartmentID_B)
                      select i);
...