Должен ли я использовать тот же LINQ IQueryable?

1

Если у меня есть следующий запрос LINQ:

public class _employeeRepository 
{
    public IQueryable<Employee> getAll()
    {
         var q = from e in Employees select e;
         return q;
    }
}

.. я должен сделать ниже, чтобы получить активных сотрудников

public IQueryable<Employee> getActiveEmployees>()
{
    return _employeeRepository.getAll().Where(q => q.active);
}

..или я должен создать отдельную функцию?

public class _employeeRepository 
{
    public IQueryable<Employee> getAll()
    {
         var q = from e in Employees select e;
         return q;
    }

    public IQueryable<Employee> getActive()
    {
        var q = from e in Employees where e.active == true select e;
    }
}

Какое преимущество или недостаток в том, чтобы делать это так или иначе?

  • 1
    Ваш метод getAll довольно бессмысленен. Это просто return Employees; , Это либо просто делает Employees доступными публично, если это не так, либо просто создает нового участника, идентичного другому.
  • 0
    codereview.stackexchange.com
Показать ещё 1 комментарий
Теги:
linq

1 ответ

1
Лучший ответ

Оба GetActive и GetActiveEmployees будут делать то же самое, т. GetActive GetActiveEmployees запрос и удерживать его для выполнения.

Запрос не будет отправляться в базу данных до тех пор, пока вы не "материализуете" его, то есть с вызовом ToList или с помощью IQueryable в инструкции foreach.

Затем, и только тогда будет выполняться запрос (в обоих случаях, аналогичный select * from Employees where IsActive=1)

Тем не менее, лучше использовать код, когда сможете, поэтому я пойду с первым подходом.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню