У меня есть ObjectQuery
, например:
ObjectQuery<Car> query = GetCarQuery();
, чем я хочу заказать по свойству Date
для связанной сущности Race
, что-то вроде
query = (ObjectQuery<Car>)query.OrderBy(x=> x.Races.Date);
query.Skip((page - 1) * rows).Take(rows).ToList();
былопытаясь пойти так:
query = (ObjectQuery<Car>)query.OrderBy(i => i.Races.OrderBy(x=> x.Date));
query.Skip((page - 1) * rows).Take(rows).ToList(); //error here
и получил ошибку при выполнении запроса
DbSortClause expressions must have a type that is order comparable.
Parameter name: key
Есть идеи?
ОБНОВЛЕНИЕ:
После прочтения этого http://blogs.msdn.com/b/alexj/archive/2009/02/25/tip-1-sorting-relationships-in-entity-framework.aspx я поступаю так:
var result = (from a in query
select new
{
Car= a,
Race= a.Races.OrderBy(x => x.Date)
}).Skip((page - 1) * rows).Take(rows).ToList();
Не получено никаких ошибок, но сортировка швов не работает.
Еще одна попыткано с Entity SQL:
query = query.OrderBy("it.Races.Date");
query = query.Skip((page - 1) * rows).Take(rows).ToList();//error here
и с ошибкой:
'Date' is not a member of 'Transient.collection[Race(Nullable=True,DefaultValue=)]'. To extract a property of a collection element, use a subquery to iterate over the collection. Near simple identifier, line 6, column 28.
Так что я думаю, что попробовал все, что мог ...