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