Ответ 1
- Запрос не выполняется, пока вы действительно не перейдете к элементам, возможно, выполнив
.ToList()
илиforeach
. Это означает, что вы по-прежнему можете добавлять фильтры, например,Where()
. - Расширяет IEnumerable
- Перечень только для пересылки. Вы не можете попасть в "пункт 4" без прохождения пунктов 0-3.
- Список только для чтения, вы не можете добавить к нему или удалить его.
- Все еще может использовать отложенное выполнение (IQueryable по-прежнему является IEnumerable).
- Случайный доступ к полному списку
- Возможно, полностью в памяти (нет отложенного выполнения, но кто знает, что именно этот класс выполняет это?)
- Поддержка добавления и удаления
- Расширяет IEnumerable и ICollection
- Между IEnumerable и IList.
- Расширяет IEnumerable
Что является "лучшим", зависит от ваших требований. Обычно IEnumerable "достаточно хорош", если вы хотите отображать только элементы. По крайней мере, всегда используйте общий вариант.