Нет, это не так. Он просто выполняет приведение, когда вы перебираете IEnumerable.
Нет определенного способа (в коде) узнать, будет ли метод использовать отложенное выполнение или нет. Документация будет вашим лучшим другом здесь, так как она скажет вам, откладывает ли она выполнение или нет.
Однако это не означает, что вы не можете делать некоторые предположения, если документация неясна.
Если у вас есть метод, который возвращает другой список / структуру (например, ToList, ToArray), он должен будет выполнить запрос, чтобы заполнить новую структуру данных.
Если метод возвращает скалярное значение, он должен выполнить запрос для генерации этого скалярного значения.
Кроме этого, если он просто возвращает IEnumerable<T>
, то он более чем вероятно откладывает выполнение. Однако это не означает, что это гарантировано, это просто означает, что это более чем вероятно.