首页 > 解决方案 > 返回列表中最常出现的字符串

问题描述

我想返回列表中最常出现的文本,以便在方法中返回

我的清单 =((EPlayersStats)x.Value).kList

杰森 ="kList": ["76561198130200574,16561198130200574,26561198130200574,36561198130200574,76561198130200574"]

我该如何进行?

标签: c#

解决方案


可以使用 LINQ 分组来实现:

myList.Split(',').GroupBy(s => s).OrderByDescending(g => g.Count()).First().Key

这以逗号分隔,将批次转换为分组(每个唯一条目的映射映射到该条目的所有出现的列表),按分组列表中的条目数排序,采用第一个分组并返回其键

A list of: "a,b,b,c,d,d,d"
Becomes an array: { "a", "b", "b", "c", "d", "d", "d" }
Becomes a grouping:
  g["a"] = new [] { "a" } //Count 1
  g["b"] = new [] { "b", "b" } //count 2
  g["c"] = new [] { "c" } //count 1
  g["d"] = new [] { "d", "d", "d" } //count 3
Orders them by count desc (d wins)
Takes the first grouping (d)
Returns its Key ("d")

推荐阅读