2014-02-14 153 views
1

我將如何排序(orderby)嵌套集合(集合中的集合)實體框架排序嵌套集

if (query.Sort.ProjectA == SortOperation.Desc) 
{ 
    entities = entities 
       .OrderByDescending(r => r.ProjectCollection.Select(p => p.JobNumber)); 
} 
else 
{ 
    entities = entities.OrderBy(r => r.ProjectCollection.Select(p =>p.JobNumber)); 
} 

我收到以下錯誤上面

DbSortClause表情代碼的性能必須具有類似訂單的類型。
參數名:關鍵

+0

你想排序父集合還是每個子集合? –

+0

按內部集合中的屬性排序 – eugenekgn

+0

通過內部集合上的屬性對父集合進行排序? –

回答

2

反向您的SelectOrderBy使用。不要被選擇的集合訂購,選擇出一個有序集合:

var query = entities.Select(r => r.ProjectACollection.OrderBy(p => p.JobNumber)); 

如果你想擁有其他領域的,選擇了一個新的實體或一些其他類型的所有要包含的其他領域好。

+0

我收到以下錯誤不能隱式地將類型'System.Linq.IQueryable >'轉換爲'System.Linq.IQueryable 」。 – eugenekgn

+1

@eugenekgn對,這個例子中的類型是不同的,所以你需要將它存儲在一個新的變量中,或者投射出一個相同類型的新實例,這意味着複製該實體中的所有屬性。 – Servy

+0

ProjectACollection是主集合中的集合 – eugenekgn