Рефакторинг обработки IEnumerable и IQueryable (C#)

Рейтинг: 0Ответов: 0Опубликовано: 29.06.2023

Имеются два объекта с типами IEnumerable и IQueryable

Один используется для обработки перечислений внутри памяти приложения, другой для отправки запросов к БД

Добавляются два метода фильтрации (по одному для каждого типа)

private IQueryable<Employees> CreateEmployeeQuery(IQueryable<Employees> query, EmployeeFilter employeeFilter)
{
    var query = query.Where(w => employeeFilter.EmployeeId == null || w.Id == employeeFilter.EmployeeId);
    
    return query;
}
private IEnumerable<Employees> CreateEmployeeQuery(IEnumerable<Employees> employees, EmployeeFilter employeeFilter)
{
    var employees = employees.Where(w => employeeFilter.EmployeeId == null || w.Id == employeeFilter.EmployeeId);
    
    return employees;
}

Хотелось бы уточнить, как будет влиять на производительность и есть ли какие-то подводные камни при использовании подхода: выделить один метод и делать преобразования .AsQueryable() или .AsEnumerable()

И какой метод в таком случае практичнее оставить? Или какие доводы есть в пользу каждого из методов?

Ответы

Ответов пока нет.