1
我有一个ObjectQuery
这样的:实体框架的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
任何想法?
UPDATE:
var result = (from a in query
select new
{
Car= a,
Race= a.Races.OrderBy(x => x.Date)
}).Skip((page - 1) * rows).Take(rows).ToList();
没有得到任何错误,但排序接缝不工作。
一个尝试,但与实体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.
因此,我认为我已经尝试了所有我能......
使用SQL事件探查,检查产生何种查询。也许它不像我预期的那样工作。 –
完成,是我的错。 '.OrderByDescending()'做这件事,但看起来像是无所谓我使用'Min()'或'Max()'出于某种原因? – Joper
我想我知道为什么,因为这个'Min()'或'Max()'包装在'.OrderBy()'或者'.OrderByDescending()'中,所以对于这个查询,它会按照这个顺序排序?我对吗?。 – Joper