【发布时间】:2013-02-19 23:25:32
【问题描述】:
我需要按 1) 不同项目出现的次数对列表进行排序,然后 2) 如果两个不同行的计数相同,则为该组的最近使用日期。
我的按功能分组和按计数排序在没有日期的情况下工作:
(from x in data
group x by new { x.Col1, x.Col2, x.Col3}
into g
let count = g.Count()
select new
{
g.Key.Col1,
g.Key.Col2,
g.Key.Col3,
count
}).OrderByDescending(x => x.count)
但是,我一直无法成功添加日期排序。我试图将日期列作为聚合添加到 group by 表达式中,但这不起作用。
(from x in data
group x by new { x.Col1, x.Col2, x.Col3, MaxDate = x.CreatedDateTime.Max()}
into g
let count = g.Count()
select new
{
g.Key.Col1,
g.Key.Col2,
g.Key.Col3,
count,
g.Key.MaxDate
}).OrderByDescending(x => x.count).ThenByDescending(x => x.MaxDate)
我明白为什么它不起作用,我只是想不出另一种方法来添加二级排序。任何想法表示赞赏!
【问题讨论】:
标签: linq