Сначала я группирую их. Затем закажите их по количеству от каждой группы. Наконец, используйте SelectMany
, чтобы получить плоскую структуру от каждого отдельного имени в группах.
var myList = new List<string>()
{
"dave",
"maggie",
"john",
"stuart",
"john",
"dave",
"john",
};
var result = myList
.GroupBy(x => x)
.OrderByDescending(x => x.Count())
.SelectMany(x => x)
.ToList();