您好,
我写了这个函数来计算一个充满单词的列表中的元音。
static IEnumerable<KeyValuePair<char, int>> Sthmpa(string sourceItem)
{
return sourceItem.ToLower()
.Where(c => "aeiou".Contains(c))
.GroupBy(c => c, (c, instances) => new KeyValuePair<char, int>(c, instances.Count()));
}
我想更改此返回值以计算列表中的单词频率。
这是一个充满单词的列表。
static IList<string> lines = new List<string>();
像这样:
var g = lines.GroupBy(words=> words);
foreach (var grp in g)
{
Console.WriteLine("{0} {1}", grp.Key, grp.Count());
}
我打印了单词频率,但是我想用这个来计算元音的方式与此相同。
任何人都可以展示我如何改变吗?
要清楚,我在Sthmpa
的线程函数中使用的函数ConcurrentBag
...
答案 0 :(得分:3)
你可以试试这个:
public IEnumerable<KeyValuePair<string, int>> GetWordFrequency(List<string> words)
{
return words.GroupBy(w => w)
.Select((item) => new KeyValuePair<string, int>(item.Key, item.Count()));
}
答案 1 :(得分:0)
这是我的方法:
private IEnumerable<KeyValuePair<string, int>> GetOccurences(IEnumerable<string> words)
{
return words.GroupBy(word => word, StringComparer.InvariantCultureIgnoreCase)
.Select(group => new KeyValuePair<string, int>(group.Key, group.Count()))
.OrderByDescending(kvp => kvp.Value);
}