LINQ Biblioteca de consultas dinámicas
Estoy creando una aplicación ASP.Net MVC 3 con Entity Framework 4. Cuando se ejecutan las dos partes de código a continuación, ambas variables (query1 y query2) tienen un tipo de retorno de
System.Data.Objects.ObjectQuery<Asset.Model.Equipment>
Query1 usa una instancia directa de ObjectContext, sin embargo, Query2 usa un patrón de repositorio, es decir, llama a GetEquipment en EquipmentService, que a su vez llama al método con el mismo nombre en Repositorio de equipo. Tanto los métodos en el Servicio como el Repositorio devuelven
IQueryable<Equipment>
How, aquí está mi pregunta, ¿cómo es que query2 solo funcionará cuando incluya
using System.Linq.Dynamic;
En la parte superior de mi controlador
using (AssetEntities context = new AssetEntities())
{
var query1 = context.Equipments
.OrderBy("it." + sidx + " " + sord)
.Skip(pageIndex * pageSize)
.Take(pageSize);
}
var query2 = equipService.GetEquipment()
.OrderBy(sidx + " " + sord)
.Skip(pageIndex * pageSize)
.Take(pageSize);
Si omito System.Linq.Dynamic de mi controlador, obtengo un error dentro de Query2 en
.OrderBy(sidx + " " + sord)
Que estado
The type arguments for method 'System.Linq.Queryable.OrderBy<TSource,TKey>(System.Linq.IQueryable<TSource>, System.Linq.Expressions.Expression<System.Func<TSource,TKey>>)' cannot be inferred from the usage. Try specifying the type arguments explicitly
¿Alguien sabe por qué query1 puede funcionar sin tener que usar System.Linq.Dynamic, pero esa consulta2 necesita ejecutarse?
Gracias a todos