我有一个包含重复项的列表,我想创建一个显示排名的输出。例如汤姆在顶部,因为他有100个条目,底部是莉莉,因为它有0。
是否可以显示一个列表,其列表与它们在列表中出现的次数相对应?
还会显示它们旁边出现的次数?
答案 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);