2010-04-11 3 views
1

У меня есть следующие данные в моей базе данных (разделенные запятой строки):Split разделенных запятыми сосчитать дублирует

«слово, тест, привет»
«тест, Lorem, слово»
«тест»
...
и т.д.

Как я могу преобразовать эти данные в словарь при этом каждой строке разделяется на каждое отдельное слово, вместе с числом раз, когда это происходит, то есть

{"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# получил с добавлением лямбда! Это как чтение Lisp;) –

+0

Отличное спасибо dtb !! – jose

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); 
} 
Смежные вопросы