LINQ最大日期与分组依据
我有一个要求,按1)不同项目出现的次数对列表进行排序,然后2)如果两个不同行的计数相同,则为该组最近使用的日期 My group by function和sorting by count正在工作,没有日期:LINQ最大日期与分组依据,linq,Linq,我有一个要求,按1)不同项目出现的次数对列表进行排序,然后2)如果两个不同行的计数相同,则为该组最近使用的日期 My group by function和sorting by count正在工作,没有日期: (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
(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)
但是,我无法成功添加日期排序。我试图将日期列作为聚合添加到GROUPBY表达式中,但这不起作用
(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)
我明白为什么它不起作用了,我就是想不出另外一条路径来添加第二个排序。任何想法都很感激 那么:
var ordered = Elev8SnaTowelTables
.GroupBy(x => new { x.Col1, x.Col2, x.Col3 })
.OrderByDescending(g => g.Count())
.ThenByDescending(g => g.Max(x => x.CreatedDateTime));
那么:
var ordered = Elev8SnaTowelTables
.GroupBy(x => new { x.Col1, x.Col2, x.Col3 })
.OrderByDescending(g => g.Count())
.ThenByDescending(g => g.Max(x => x.CreatedDateTime));
这就是你要找的(我想)
这就是你要找的(我想)
对于MaxDate,此查询将整个数据行作为MaxDate列的类型。我得玩一下,看看能不能缩小范围。是的,你的权利。幕后是什么,比如linq到sql,实体框架?“数据”是一个自定义数据,我对它进行了一些编辑。但是您的数据源(如实体框架)可能会排除某些构造。这是可行的!非常感谢。我没有得到“.OrderByDescending(d=>d)”部分,但是我的LinqFoo很弱。对于MaxDate,这个查询将整个数据行作为MaxDate列的类型。我得玩一下,看看能不能缩小范围。是的,你的权利。幕后是什么,比如linq到sql,实体框架?“数据”是一个自定义数据,我对它进行了一些编辑。但是您的数据源(如实体框架)可能会排除某些构造。这是可行的!非常感谢。我没有得到“.OrderByDescending(d=>d)”部分,但是我的LinqFoo很弱。我得查一下。