Я создаю приложение ASP.Net MVC 3 с Entity Framework 4. Когда выполняются два фрагмента кода ниже, обе переменные (query1 и query2) имеют тип возврата
System.Data.Objects.ObjectQuery<Asset.Model.Equipment>
Query1 использует прямой экземпляр ObjectContext, однако Query2 использует шаблон репозитория, то есть он вызывает GetEquipment в EquipmentService, который, в свою очередь, вызывает метод с тем же именем в репозитории оборудования. Оба метода в Сервисе и Репозитории возвращают
IQueryable<Equipment>
Как, вот мой вопрос, почему запрос2 будет работать только тогда, когда я включу
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, но этот запрос2 требует его выполнения?
Спасибо всем.