2010-04-11 136 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); 
}