IQueryable to List

Estoy usandoSystem.Linq.Dynamic para permitirme seleccionar dinámicamente una lista de campos de una consulta como esta:

finalQuery = query.Select(string.Format("new({0})", string.Join(",", selectors)));

Dóndeselectors es solo unList<string> con todos los campos que quiero Esto funciona muy bien, pero esta versión del método de extensiónSelect devuelve unIQueryable. No es estono IQueryable<T>. Si tengo unIQueryable<T> Simplemente puedo hacer un.ToList() para convertirlo en una lista y forzar la consulta para que realmente se ejecute en la base de datos, pero con el no genéricoIQueryable, ese método no existe.

Esto es porqueToList se hereda deIEnumerable<T> cualIQueryable<T> hereda yIQueryableObviamente no.

Entonces, ¿cuál es la forma más eficiente de obtener unIQueryable ejecutar la consulta y devolverme una lista? Puedo hacer esto:

List<object> rtn = new List<object>();
foreach (var o in finalQuery)
{
    rtn.Add(o);
}

Pero parece que debería ser una manera más fácil.

Editar: en respuesta a las sugerencias, probé ambas:

finalQuery.Cast<object>().ToList();

y:

finalQuery.Cast<dynamic>().ToList();

Que ambos danNotSupportedExceptions con el mensaje:

Unable to cast the type 'DynamicClass1' to type 'System.Object'. LINQ to Entities 
only supports casting EDM primitive or enumeration types.

Respuestas a la pregunta(1)

Su respuesta a la pregunta