Библиотека динамических запросов LINQ

Я создаю приложение ASP.Net MVC 3 с Entity Framework 4. Когда выполняются два фрагмента кода ниже, обе переменные (query1 и query2) имеют Тип возврата

System.Data.Objects.ObjectQuery<Asset.Model.Equipment>

Query1 использует прямой экземпляр ObjectContext, однако Query2 использует шаблон репозитория, то есть вызывает GetEquipment в EquipmentService, который, в свою очередь, вызывает тот же именованный метод в Equipment Repository. Оба метода в Службе и Репозитории возвращают

IQueryable<Equipment>

Как, вот мой вопрос, почему query2 будет работать только тогда, когда я включу

using System.Linq.Dynamic;

в верхней части моего контроллера

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);

Если я опущу System.Linq.Dynamic из моего контроллера, я получаю ошибку в Query2 в

.OrderBy(sidx + " " + sord)

В котором говорится

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

Кто-нибудь знаете, почему query1 может работать без использования System.Linq.Dynamic, но этому query2 он нужен для выполнения?

Всем спасибо.

7
задан Oleg 1 March 2011 в 20:30
поделиться