Это IEnumerable<T>
. Насколько мне известно, ссылка всегда указывает на экземпляр класса. Какой тип экземпляра действительно указывает на запрос LINQ?
Каков тип возвращаемого запроса LINQ?
Ответ 1
Вы можете найти его, вызвав .GetType()
в своей переменной IEnumerable<T>
и проверив тип в отладчике.
Для разных поставщиков LINQ и даже разных методов LINQ такие типы могут быть или не быть разными.
Что важно для вашего кода, так это то, что все они реализуют IEnumerable<T>
, с которым вы должны работать, или IQueryable<T>
, который также принимает выражения, что означает, что ваши предикаты и прогнозы станут синтаксическими деревьями и могут управляться поставщиком LINQ во время выполнения, например для перевода в SQL.
Фактические классы, если это то, о чем вы просите, могут даже быть сгенерированы с помощью компилятора, например. yield return
выражение переводится в такой класс.
В любом случае они обычно являются внутренними, и вы никогда не должны никогда зависеть от них.
Ответ 2
В зависимости от исходного источника данных это либо IEnumerable, либо IQueryable:
Результат запроса базы данных Linq обычно IQueryable <T> , который получен из IEnumerable <T> , IQueryable и IEnumerable.
Если запрос базы данных включает предложение OrderBy, тип IOrderedQueryable <T> , являющийся производным от IQueryable <T>
Если ваш источник данных является IEnumerable, тип результата IEnumerable <T>
Ответ 3
Я не знаю, но я предполагаю, что это внутренний тип. Вам не нужно думать о классе.
На самом деле это могут быть разные классы в зависимости от конкретного запроса. Компилятор может преобразовать выражение LINQ в ту или иную реализацию в зависимости от условий/обработки.
Ответ 4
Вы можете проверить здесь для трех частей операции запроса. Вы можете видеть, что возвращаемый тип запроса LINQ - IEnumerable <int> .
Ответ 5
если я не ошибаюсь, IEnumerable< T >
, где T зависит от вашего запроса
Ответ 6
Тип возврата зависит от результата запроса. Обычно, если запрос возвращает несколько результатов, я получаю IEnumerable<T>
, и если это единственный результат, то тип T
.
Тип также может быть анонимным, если вы определили новую структуру, используя .Select(new {id =1, name="Jon"});
вид синтаксиса