Cómo construir group-by dinámicamente en una lista de diccionarios

Estoy tratando de realizar un groupby en un IEnumerable. El problema es que no sé en tiempo de compilación qué campos quiero agrupar. he encontradootro post en la pila que explica cómo hacer esto cuando la clase es conocida y tiene propiedades, pero en mi caso estoy tratando con un diccionario y las claves también se conocen solo en tiempo de ejecución.

Mi código se parecería a algo como esto (sé que esto no se 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]]) });
}  

¿Algunas ideas? Comencé a buscar en LINQ dinámico pero estoy atascado (porque no estoy usando propiedades sino una colección de Clave / Valor) ...

¡¡Gracias a todos!!

Sean

Respuestas a la pregunta(2)

Su respuesta a la pregunta