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

Respuestas a la pregunta(2)

Su respuesta a la pregunta