2014-02-14 37 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