用C#对列表中的相同字符串出现的频率进行排序

时间:2019-10-03 06:58:16

标签: c# arrays list linq sorting

我有一个列表:

dave
maggie
john
stuart
john
john
dave
john
maggie
maggie

我想要的结果是:

john
john
john
john
maggie
maggie
maggie
dave
dave
stuart

1 个答案:

答案 0 :(得分:6)

首先,我将它们分组。然后按每个组的计数对它们进行排序。最后,使用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();