显示排名顺序最多的人#

时间:2011-11-21 14:42:03

标签: c# ranking

我有一个包含重复项的列表,我想创建一个显示排名的输出。例如汤姆在顶部,因为他有100个条目,底部是莉莉,因为它有0。

是否可以显示一个列表,其列表与它们在列表中出现的次数相对应?

还会显示它们旁边出现的次数?

4 个答案:

答案 0 :(得分:1)

以下内容将给出IEnumerable,其中每个项目都包含该组中的代表项目及其出现的次数。

myList
    .GroupBy( item => item.Name )
    .OrderByDescending( g => g.Count() )
    .Select( g => new {item=g.First(), numOcurrences=g.Count() )

答案 1 :(得分:0)

var groups = list.GroupBy(item => item);
var orderedGroups = groups.OrderByDescending(group => group.Count());
foreach (var group in orderedGroups)
{
  Console.WriteLine(string.Format("{0} - {1}", group.Key, group.Count());
}

答案 2 :(得分:0)

var query = File
    .ReadLines("input.txt")
    .GroupBy(x => x)
    .Select(g => new { Key = g.Key, Count = g.Count() })
    .OrderByDescending(i => i.Count)
    .Take(20);

foreach (var item in query)
{
    Console.WriteLine("{0,5} {1}", item.Count, item.Key);
}

答案 3 :(得分:0)

这是一个简单的LINQ查询,远程执行。

List<string> list = new List<string> { "a", "b", "a", "c", "a", "d", "c" };
var counts = from item in list
             group item by item
                 into grp
                 orderby grp.Count() descending
                 select new
                            {
                                Value = grp.Key,
                                Count = grp.Count()
                            };
foreach (var item in counts)
    Console.WriteLine("{0} ({1})", item.Value, item.Count);