public ContentIndex Build(string paragraph) { if (string.IsNullOrWhiteSpace(paragraph)) { return(null); } var result = new ContentIndex { Content = paragraph, Lines = new List <LineIndex>(), AllWords = new List <WordFrequency>() }; var lines = StringProcessor.GetSentences(paragraph); var lineIndex = 0; foreach (var line in lines) { var words = StringProcessor.GetWordsLower(line); result.Lines.Add(new LineIndex { Id = ++lineIndex, Line = line, WordIndex = GetWordFrequency(words).ToList() }); } var allWordCombinationsInAllLines = result.Lines.Select(l => l.WordIndex); result.AllWords = GetCombinedWordFrequency(allWordCombinationsInAllLines) .ToList(); return(result); }