Estoy construyendo una aplicación ASP.Net MVC 3 con Entity Framework 4. Cuando las dos piezas de código a continuación se ejecutan, ambas variables (QUERY1 y QUERY2) tienen un tipo de retorno deLINQ Consulta dinámica Biblioteca
System.Data.Objects.ObjectQuery<Asset.Model.Equipment>
Query1 utiliza 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 mismo método nombrado en el Repositorio de equipos. Tanto los métodos en el servicio y el retorno Repositorio
IQueryable<Equipment>
Cómo, aquí está mi pregunta, ¿cómo es que consulta2 sólo funcionará cuando se incluyo
using System.Linq.Dynamic;
En la parte superior de mi controlador de
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 desde mi controlador, aparece un error en Query2 en
.OrderBy(sidx + " " + sord)
Que establece
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é consulta1 puede trabajar sin tener que utilizar System.Linq.Dynamic, pero que consulta2 lo necesita para ejecutar?
Gracias a todos.
Esta es una excelente respuesta. Gracias por su tiempo :) – tgriffiths
@tgriffiths: En [la respuesta] (http://stackoverflow.com/questions/5500805/asp-net-mvc-2-0-implementation-of-searching-in-jqgrid/5501644# 5501644) Muestro cómo implementar filtrado/búsqueda en jqGrid que se puede usar para [buscar en la barra de herramientas] (http://www.trirand.com/jqgridwiki/doku.php?id=wiki:toolbar_searching) y [búsqueda avanzada] (http://www.trirand.com/jqgridwiki/doku.php?id=wiki:advanced_searching). Actualicé mi respuesta con los enlaces correspondientes. – Oleg