2010-04-11 110 views
1

我在我的数据库中的以下数据(逗号分隔字符串):拆分逗号分隔字符串来算重复

“字,测试,你好”
“测试,排版测试,单词”
“测试”
...

如何可以改变这个数据到一个字典,由此每个串的是,其发生的次数一起分离成每个不同的字,即

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

如果这对所提供的解决方案有所不同,我将拥有大约3000行数据。我也是使用.net 3.5(和有兴趣看到使用任何解决方案LINQ)

回答

9
IEnumerable<string> strings = ...; 

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

哇,没我不明白C#通过添加lambda表达式而获得的好处!这就像阅读Lisp;) – 2010-04-11 18:40:51

+0

非常感谢dtb! – jose 2010-04-12 07:57:25

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); 
}