IQueryable <t>Или IList <t> - PullRequest
       33

IQueryable <t>Или IList <t>

0 голосов
/ 24 июня 2010

В моем BLL есть несколько методов, которые извлекают некоторые записи из базы данных и передают их в интерфейс для привязки к элементам управления данными, таким как Gridview или ...
Я мог выбрать тип возвращаемых данных для методов: IQueryable<t> или Ilist<t>.
У меня вопрос, какой из них будет лучше для меня и почему? На самом деле я не знаю разницы между этими двумя типами, и я не знаю, какой из них лучше всего подходит для каких ситуаций?

Спасибо

Ответы [ 2 ]

5 голосов
/ 24 июня 2010

Разница в том, что IList<T> представляет фактический список результатов. Он будет «материализован» - извлечен из базы данных в память. (Теоретически это просто интерфейс, конечно - он может все еще отложить ...)

IQueryable<T> представляет запрос - например, вы все еще можете создавать дополнительные биты запроса. Затем вы можете оценить запрос, запросив результаты. Это будет использовать отложенное выполнение, запрашивая результаты только тогда, когда они действительно нужны.

Что касается того, что вы должны вернуть ... если вы просто собираетесь связать напрямую с пользовательским интерфейсом, вполне может иметь смысл преобразовать его в список, чтобы вы могли лучше контролировать, когда запрос фактически выполняется , С другой стороны, если вы хотите настроить запрос, использование IQueryable<T> даст вызывающей стороне большую гибкость.

0 голосов
/ 24 июня 2010

Я предлагаю ICollection или IList

IQueryable - предоставляет функциональные возможности для оценки запросов к конкретному источнику данных, в котором известен тип данных.

В любой момент вы можете вызвать ICollection.AsQueryable.().

...