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 yIQueryable
Obviamente 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.