Como construir dinamicamente group-by em uma lista de dicionários

Eu estou tentando executar um groupby em um IEnumerable. O problema é que eu não sei em tempo de compilação quais campos eu quero groupby. eu encontreioutro post na pilha que explica como fazer isso quando a classe é conhecida e tem propriedades, mas no meu caso eu estou lidando com um dicionário e as chaves também são conhecidas apenas em tempo de execução.

Meu código se pareceria com algo assim (eu sei que isso não compila ...):

private object GetValuesGroupedBy(List<string> groupbyNames, List<string> summableNames)
{
     // get the list of items in the grid
     var listOfDicos = grid.AllItems;

     return listOfDicos
                .GroupBy(x => new { x[groupbyNames[0]], 
                                    x[groupbyNames[1]], 
                                    x[groupbyNames[2]] })
                .Select(group => new { group.Key, 
                                       group.Sum(x => x[summableNames[0]]), 
                                       group.Sum(x => x[summableNames[1]]) });
}  

Alguma ideia? Eu comecei a olhar para o Dynamic LINQ, mas estou preso (porque eu não estou usando propriedades, mas uma coleção de chave / valor) ...

Obrigado a todos !!

Sean

questionAnswers(2)

yourAnswerToTheQuestion