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()
中,所以对于该查询,它将按照该顺序排序?我说得对吗?。