我正在为一个特定的值清理5个文件。我不期望有任何不同的价值观,但因为这是为了我自己的教育目的,我希望应用程序计算,比较和打印最流行的价值观。
例如:

ArrayList arrName = new ArrayList();
arrName.Add("BOB")
arrName.Add("JOHN")
arrName.Add("TOM")
arrName.Add("TOM")
arrName.Add("TOM")

结果我想成为汤姆,但作为一个新手,我真的不知道如何前进。
任何想法、建议或例子都非常感谢。
谢谢你

最佳答案

您可以使用字典(.net 2.0+)保存每个值的重复计数:

Dictionary<string, int> counts = new Dictionary<string, int>();
foreach (string name in arrName) {
   int count;
   if (counts.TryGetValue(name, out count)) {
      counts[name] = count + 1;
   } else {
      counts.Add(name, 1);
   }
}

// and then look for the most popular value:

string mostPopular;
int max = 0;
foreach (string name in counts.Keys) {
   int count = counts[name];
   if (count > max) {
       mostPopular = name;
       max = count;
   }
}

// print it
Console.Write("Most popular value: {0}", mostPopular);

如果您使用的是C 3.0(.NET 3.5+),请使用:
var mostPopular = (from name in arrName.Cast<string>()
                   group name by name into g
                   orderby g.Count() descending
                   select g.Key).FirstOrDefault();

Console.Write("Most popular value: {0}", mostPopular ?? "None");

08-29 00:47