2014-02-27 88 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 
相關問題