2012-05-06 6 views
0

空白で区切られた一連の単語があります。その文字列をdictionary<string, int>に分割して、各単語の頻度の数を、選択トップ3000で降順に並べ替える必要があります。辞書を周波数の数で並べ替えるトップ3000 c#

この操作を行う簡単な方法はありますか?ありがとう。

私が望むものを得るためにこのコードを修正したいと思います。

+0

スプリングボードが必要な場合:文字列を区切り文字で区切り、残りはLINQを使った1行のコードである 'System.String'メソッドがあります。 – Jon

+0

@ Jon、私はそれぞれの単語数を見つけて、その数に基づいて上位300を降順で選択したいと思う。 –

+0

あなたの問題をより良い方法で表現してください。 –

答えて

3

SplitGroupBy支援するOrderByDescendingTakeとあなたが必要とする主な方法、以下のとおりです。

myString.Split(' ') 
     .GroupBy(x => x) 
     .OrderByDescending(g => g.Count()) 
     .Take(3000) 
     .Select(g => g.Key) 

をここからDictionary<string,int>を取得するには、.ToDictionary(g => g.Key, g=> g.Count()).Select(g => g.Key)を交換してください。

+0

辞書に単語を保存したい –

+1

@JoneMamni - どこに戻ってきますか?上記は、あなたが何を説明するのでしょうか。これを変数に代入すると、結果で必要なことを行えるようになります。 – Oded

+0

辞書に戻る

関連する問題