拆分逗号分隔的字符串以计算重复项

时间:2010-04-11 17:13:56

标签: c#

我的数据库中有以下数据(以逗号分隔的字符串):

“字,测试,你好”
“测试,lorem,字”
“测试”
...
等等

如何将这些数据转换为字典,每个字符串被分成每个不同的单词及其出现的次数,即

{"test", 3},  {"word", 2}, {"hello", 1}, {"lorem", 1}

如果这对所提供的任何解决方案产生影响,我将拥有大约3000行数据。我也使用.NET 3.5(并且有兴趣看到使用linq的任何解决方案)

2 个答案:

答案 0 :(得分:9)

IEnumerable<string> strings = ...;

Dictionary<string,int> result = strings.SelectMany(s => s.Split(','))
                                       .GroupBy(s => s.Trim())
                                       .ToDictionary(g => g.Key, g => g.Count());

答案 1 :(得分:1)

这是类似伪代码(尚未尝试编译)

List<string> allRows = getFromDatabase();

var result = new Dictionary<string, int>();
foreach (string row in allRows)
{
   string[] words = row.Split(',');

   foreach (string word in words)
      if (result.ContainsKey(word))
         result[word]++;
      else
         result.Add(word, 1);
}