¿Cuál es el tipo de retorno de una consulta LINQ?

Es IEnumerable . Que yo sepa, la referencia siempre apunta a una instancia de clase. ¿A qué tipo de instancia realmente apunta la consulta LINQ?

Puede averiguarlo llamando a .GetType() en su IEnumerable e inspeccionando el tipo en el depurador.

Para diferentes proveedores de LINQ e incluso diferentes métodos de LINQ, estos tipos pueden o no ser diferentes.

Lo que importa para su código es que todos implementan IEnumerable que debería trabajar, o IQueryable que también acepta expresiones , lo que significa que sus predicados y proyecciones se convertirán en árboles de syntax y pueden ser manipulados por un proveedor de LINQ en tiempo de ejecución. por ejemplo, para ser traducido a SQL.

Las clases reales , si esto es lo que estás preguntando, pueden incluso ser generadas por el comstackdor, por ejemplo, la expresión de yield return se traduce a dicha clase.
De cualquier manera, generalmente son internas y nunca debes depender de ellas .

Dependiendo de su fuente de datos original, es IEnumerable o IQueryable:

El resultado de una consulta de la base de datos Linq suele ser IQueryable que se deriva de IEnumerable , IQueryable e IEnumerable.

Si su consulta de base de datos incluye una cláusula OrderBy, el tipo es IOrderedQueryable , que se deriva de IQueryable

Si su fuente de datos es un IEnumerable, el tipo de resultado es IEnumerable

No lo sé, pero creo que es un tipo interno. No tienes que pensar en la clase.

De hecho, podrían ser diferentes clases dependiendo de la consulta concreta. El comstackdor podría convertir la expresión LINQ a una u otra implementación dependiendo de las condiciones / procesamiento.

si no me equivoco, IEnumerable< T > , donde T depende de su consulta

Aquí puede consultar Tres partes de la operación de consulta. Puede ver que el tipo de retorno de una consulta LINQ es IEnumerable .