I have a list:
dave
maggie
john
stuart
john
john
dave
john
maggie
maggie
My desired result would be:
john
john
john
john
maggie
maggie
maggie
dave
dave
stuart
I have a list:
dave
maggie
john
stuart
john
john
dave
john
maggie
maggie
My desired result would be:
john
john
john
john
maggie
maggie
maggie
dave
dave
stuart
First I group them. Then order them by the count from each group. Lastly use SelectMany
to get a flat structure from each individual name in the groups.
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();