public static NGramCache Aggregate(IEnumerable<NGramCache> nGramCaches)
{
var result = new NGramCache();
foreach (var item in nGramCaches)
{
IEnumerable<NGramCache> nGrams = item.NextSegment.Values;
while(nGrams.Count() > 0)
{
foreach (var xGram in nGrams)
{
result.Increment(xGram.NGram, xGram.Value);
}
// next n
nGrams = nGrams.SelectMany(el => el.NextSegment.Values);
}
}
return result;
}