Подтвердить что ты не робот

Каков тип возвращаемого запроса LINQ?

Это IEnumerable<T>. Насколько мне известно, ссылка всегда указывает на экземпляр класса. Какой тип экземпляра действительно указывает на запрос LINQ?

4b9b3361

Ответ 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"}); вид синтаксиса