2014-02-27 47 views
0

我没碰过C#.NET在一段时间,所以我得到这个颇为生疏。我有一个问题,希望有人可以在这里回答。排序和计数字符串发生的最佳方法?

我有一个接受字符串输入的程序。我的目标是让所以每XX秒运行,将采取的投入和排序他们入取字符串被使用最多,返回最常见的词,然后删除输入以准备下一批私有函数。例如,如果程序询问喜欢的颜色,并且10个用户键入诸如“红色”“蓝色”“红色”“橙色”“粉红色”“橙色”“红色”“蓝色”“绿色”“ BLACK”我希望函数先来看看通过,并弄清楚,RED有人说3次(因此应该返回RED)。

但我的我的大脑失败我的生活。我敢肯定,我需要somekind的数组,但我不记得如何去根据该数组内的字符串的出现排序它。

的伪代码明智的,我想我会需要这样的东西

数组[字,计数器]

如果(词已经存在)计数器++ 其他(加字,计数器设置为1)

然后按柜台排序。

但是,如何真正实现即到C#... ...韦尔普

我知道这是怎样的一个愚蠢的问题,但谷歌将返回一堆过于复杂或完全无关的东西。所以,感谢任何帮助!

回答

0

做这样的事情来存储颜色:

List<string> colors = new List<string>(); 

然后像做这读它们:

colors.Add(Console.ReadLine()); 

然后使用这样的功能找出哪种颜色是最常见的:

private string GetMostCommonColor() 
{ 
    return (from i in list 
      group i by i into grp 
     orderby grp.Count() descending 
      select grp.Key).First(); 
} 

请参阅this StackOverflow question了解更多信息。

4

您可以按降序使用LINQs GroupBy,排序计数和抢第一项:

var list = new List<string>() {"RED", "BLUE", "RED", "ORANGE", "PINK", "ORANGE", "RED", "BLUE", "GREEN", "BLACK"}; 

Console.WriteLine(list.GroupBy(x => x) 
         .OrderByDescending(x => x.Count()) 
         .First().Key); // RED 
相关问题