На этот вопрос уже отвечали, но я видел это, когда искал ответ на свой собственный похожий вопрос, и чувствую, что я узнал из этого, может помочь кому-то еще.
В моем коде мой Контроллер вызываетСлужба для получения данных из репозитория.
var employees = MyService.GetEmployees()
Затем она переходит в ViewModel в виде списка сотрудников.
Служба возвращает контроллеру, его клиенту, элемент типа IEnumerable.,Он НЕ возвращает IQueryable по двум причинам:
1) IQueryable использует System.Linq.Любой, кто использует мой сервис, должен будет импортировать это пространство имен, когда ему это не нужно *.
2) Если клиенту нужны отфильтрованные данные, ему необходимо сообщить об этом службе, например, var employee = MyService.GetCurrentEmployees ()/ GetEmployees (someFilter)
- Если им необходимо выполнить дополнительную фильтрацию, они могут импортировать пространство имен и привести Список к IQueryable и использовать LINQ для этого.
служба не должна предполагать, что клиент может захотеть выполнить фильтрацию и будет возвращать IQueryable «на всякий случай».
В моем коде репозиторий вернет IQueryable для службы, потому что здесь происходит фильтрация, и я хочу использоватьLINQ.
Надеюсь, это кому-нибудь поможет:)