我正在使用linqpad,当我分组时,它为我正在分组的每个键显示表格做了很棒的工作。但我无法对呈现的表格进行排序。
这就是我所拥有的:
tblAgentActivities
.Where (aa => aa.StartDate >= DateTime.Today)
.OrderBy (aa => aa.AgentActivityID)
.GroupBy (aa => aa.tblUser.FullName)
.OrderBy (aa => aa.Key)
我希望按键排序(这是有效的),然后我希望按AgentActivityID对分组表进行排序(不起作用)
答案 0 :(得分:2)
如果您的查询是LINQ-to-Objects查询,它将按原样正常工作,因此我认为您通过LINQ-to-SQL或Entity Framework查询数据库。
在这种情况下,解决方案是将.AsEnumerable()
插入到查询中,以便在客户端进行分组和后续排序:
tblAgentActivities
.Where (aa => aa.StartDate >= DateTime.Today)
.OrderBy (aa => aa.AgentActivityID)
.AsEnumerable()
.GroupBy (aa => aa.tblUser.FullName)
.OrderBy (aa => aa.Key)
鉴于您正在将所有分组数据提取到客户端,因此在客户端而不是服务器上进行分组没有性能损失;事实上,您可以通过减轻数据库服务器的负担来提高可扩展性。
答案 1 :(得分:1)
怎么样:
tblAgentActivities
.Where (aa => aa.StartDate >= DateTime.Today)
.GroupBy (aa => aa.tblUser.FullName)
.Select(aa => new {
FullName = aa.Key,
List = aa.OrderBy(u => u.AgentActivityID).AsEnumerable()
})
.OrderBy (aa => aa.FullName)
.ToList();