获取文本中出现的单词数

use*_*498 0 c# linq string

可以使用C#Linq完成吗?

例如:

彼得吹笛者挑选了一包腌制的辣椒,辣椒是彼得的甜蜜和撒种,彼得想

结果:

peter 3
peppers 2
picked 1
...
Run Code Online (Sandbox Code Playgroud)

我可以使用嵌套的for循环来实现它,但我认为使用Linq有一种更简洁,资源更轻的方式.

Ree*_*sey 6

您可以使用GroupBy:

string original = "peter piper picked a pack of pickled peppers, the peppers were sweet and sower for peter, peter thought";

var words = original.Split(new[] {' ',','}, StringSplitOptions.RemoveEmptyEntries);
var groups = words.GroupBy(w => w);

foreach(var item in groups)
    Console.WriteLine("Word {0}: {1}", item.Key, item.Count());
Run Code Online (Sandbox Code Playgroud)