Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
LINQ最大日期与分组依据_Linq - Fatal编程技术网

LINQ最大日期与分组依据

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

我有一个要求,按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,
    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很弱。我得查一下。