リストを 1) 個別の項目が表示される回数で並べ替え、次に 2) 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)
うまくいかない理由がわかりました。セカンダリソートを追加する別のルートが思い浮かびません。どんなアイデアでも大歓迎です!