LINQ:按最常见值排序

use*_*223 5 c# linq lambda

我正在尝试在c#中创建一个"有序"对象列表,其中列表将按ImdbId属性中最常见的值排序.我没有使用数据库我从列表中的远程api获得结果,我只需要以优雅的方式对列表进行排序.

class Movie
{
String ImdbId {get; set; }
String Name {get;set;}
    ... more properties
}
Run Code Online (Sandbox Code Playgroud)

未排序列表的示例:

imdbId  | Name
698649  | "Sex and the City" Models and Mortals
698669  | "Sex and the City" The Awful Truth
698649  | "Sex and the City" Models and Mortals
698649  | "Sex and the City" Models and Mortals
698679  | "Sex and the City" The Drought
698697  | "Sex and the City" Valley of the Twenty-Something Guys
1568911 | War Horse
Run Code Online (Sandbox Code Playgroud)

排序应该如下所示:

imdbId  | Name
698649  | "Sex and the City" Models and Mortals
698649  | "Sex and the City" Models and Mortals
698649  | "Sex and the City" Models and Mortals
698669  | "Sex and the City" The Awful Truth
698679  | "Sex and the City" The Drought
698697  | "Sex and the City" Valley of the Twenty-Something Guys
1568911 | War Horse
Run Code Online (Sandbox Code Playgroud)

这是另一个例子:

imdbId   |  Name
1568911 |   War Horse 
698690  |   "Sex and the City" The Turtle and the Hare 
698653  |   "Sex and the City" Old Dogs, New Dicks 
698690  |   "Sex and the City" The Turtle and the Hare 
698690  |   "Sex and the City" The Turtle and the aHare 
1000774 |       Sex and the City 
Run Code Online (Sandbox Code Playgroud)

排序应该如下所示:

imdbId  | Name
698690  | "Sex and the City" The Turtle and the Hare 
698690  | "Sex and the City" The Turtle and the Hare 
698690  | "Sex and the City" The Turtle and the aHare 
698653  | "Sex and the City" Old Dogs, New Dicks 
1000774 | Sex and the City
1568911 | War Horse  
Run Code Online (Sandbox Code Playgroud)

我试着追随但没有运气.

List<Movie> newList = List
     .OrderByDescending(a =>  a.ImdbId)
     .ThenByDescending(a => a.ImdbId.Count())
     .ToList();
Run Code Online (Sandbox Code Playgroud)

知道如何用lambda或LINQ实现这个目标吗?

Kin*_*ing 7

试试这个:

var newList = List.GroupBy(x=>x.ImdbId)
                  .OrderByDescending(g=>g.Count())
                  .SelectMany(g=>g).ToList();
Run Code Online (Sandbox Code Playgroud)