1) PagedList будет перебирать ваши данные, по крайней мере, дважды по виду - один раз, чтобы посчитать, а затем один раз, чтобы получить нужную страницу. Убедитесь, что это ничего не испортило - или рассмотрите возможность кэширования в списке или каком-либо другом «дешевом» буфере, чтобы избежать необходимости повторять запрос дважды.
2) Если вы позвоните ToList()
по полученному результату, прежде чем передать его в выгружаемый список, будет ли он выглядеть правильно?
3) Если вы просто используете метод GetColors()
и выводите все, что оно дает, выглядит ли правильно?
По сути, вам нужно попытаться решить, связана ли проблема с GetColors, PagedList или взаимодействием между ними.
РЕДАКТИРОВАТЬ: Единственный способ "сокращения" Count () заключается в реализации IList
или IList<T>
. Однако в этот момент вам придется либо сделать это правильно, либо просто переопределить Count
и снова внедрить IEnumerable
. Я думаю, что звонить по номеру ToList()
и использовать результат, скорее всего, будет намного быстрее, если у вас нет большого списка, который вы не хотите хранить в памяти.