IQueryable<T>
также распространяется IQueryable
. По сути это IQueryable
, который можно перечислить строго типизированным способом. (И IQueryable
, и IEnumerable<T>
уже расширяют IEnumerable
, так что на этом фронте ничего не добавляется.)
Теперь наличие строго типизированного IQueryable
позволяет строго типизировать LINQ to SQL (и т. Д.) - в противном случае вы не можете писать предложения Where
и т. Д. Без приведения. Фактические используемые методы LINQ относятся к типу Queryable
, в значительной степени отражая методы Enumerable
, но вместо делегатов принимают деревья выражений . (Если вы ранее не использовали деревья выражений, они в основном являются структурами данных , описывающими код, тогда как делегатом является сам код. Таким образом, вы можете выполнить делегат, но вы можете исследовать дерево выражений для посмотрим, что он будет делать.)