У меня есть несколько методов, которые возвращают список T, например, GetAllEvents. В некоторых случаях мне нужно затем отфильтровать этот список событий (или любой другой мой список) по дате или какому-либо другому свойству элементов.
Я знаю, что запросы LINQ могут быть «связаны» или иметь x строк, которые дополнительно уточняют их, и запрос не будет выполняться до определенного момента, когда вам нужно будет фактически использовать их в операторе, отличном от linq (пожалуйста, поправьте меня, если я ошибаюсь на этом убеждении.)
Мой вопрос: если мой метод GetAllXXX возвращает список того, что я получаю, является ли метод .ToList(), который я использую в конце моего кода GetAllXXX, выполняющего LINQ? Должен ли я вместо этого вернуть IEnumerable? Если только для тех случаев, когда мне нужно сделать что-то еще для «результатов» ДО того, как запрос будет фактически запущен.
Вот пример моего беспокойства: у меня, скажем, 1000 событий. GetAllEvents извлечет все 1000 и даст мне их список. Затем, в зависимости от того, на какой странице находится пользователь, могут отображаться события только на сегодня, на этой неделе или определенной категории. В идеале, к тому времени, когда я показываю пользователю 5 событий, происходящих сегодня, я действительно не хочу передавать все 1000 по сети, а затем урезать их до 5, которые они действительно хотят. Да, я знаю, что на данный момент это все на стороне сервера, но если он все еще выделяет память для 1000, я пытаюсь этого избежать.
Любые указатели или предложения?
List<T>
. Но вы можете подумать о возвратеIList<T>
. - person R. Martinho Fernandes   schedule 26.04.2011