Entity framework 4 实体框架ObjectQuery多对多关系上的日期顺序
我有一个像这样的Entity framework 4 实体框架ObjectQuery多对多关系上的日期顺序,entity-framework-4,linq-to-entities,Entity Framework 4,Linq To Entities,我有一个像这样的ObjectQuery: ObjectQuery<Car> query = GetCarQuery(); query = (ObjectQuery<Car>)query.OrderBy(i => i.Races.OrderBy(x=> x.Date)); query.Skip((page - 1) * rows).Take(rows).ToList(); //error here 我试着这样做: ObjectQuery<Car>
ObjectQuery
:
ObjectQuery<Car> query = GetCarQuery();
query = (ObjectQuery<Car>)query.OrderBy(i => i.Races.OrderBy(x=> x.Date));
query.Skip((page - 1) * rows).Take(rows).ToList(); //error here
我试着这样做:
ObjectQuery<Car> query = GetCarQuery();
query = (ObjectQuery<Car>)query.OrderBy(i => i.Races.OrderBy(x=> x.Date));
query.Skip((page - 1) * rows).Take(rows).ToList(); //error here
有什么想法吗
更新:
读完后,我会这样说:
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.
所以我想我已经尽了我所能…你认为它应该如何工作?您拥有汽车,并且每个汽车都可以参加多场比赛,因此您无法根据比赛数据对汽车进行排序,除非您执行以下任一操作:
- 使用一些比赛集合对汽车进行排序-例如
.OrderBy(x=>x.races.Max(Date))
- 将结果展平,以获得每场比赛的新记录(重复赛车)
var result = (from car in query
from race in car.Races
select new
{
Car = car,
Race = race
})
.OrderBy(x => x.Race.Data)
.Skip((page - 1) * rows)
.Take(rows).ToList();
使用SQL探查器并检查生成的查询。也许它没有像我预期的那样工作。完成了,是我的错
.OrderByDescending()
做这件事,但似乎出于某种原因我使用“Min()”或“Max()”并不重要?我想我知道为什么,因为这个Min()
或Max()
包装在.OrderByDescending()
中,所以对于该查询,它将按照该顺序排序?我说得对吗?。