Jak dynamicznie budować grupy na liście słowników

Próbuję wykonać groupby na IEnumerable. Problem polega na tym, że w czasie kompilacji nie wiem, które pola chcę grupować. znalazłeminny post na stosie wyjaśnia, jak to zrobić, gdy klasa jest znana i ma właściwości, ale w moim przypadku mam do czynienia ze słownikiem, a klucze są znane tylko w czasie wykonywania.

Mój kod przypominałby coś takiego (wiem, że to się nie kompiluje ...):

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]]) });
}  

Jakieś pomysły? Zacząłem szukać w Dynamic LINQ, ale utknąłem (ponieważ nie używam właściwości, ale kolekcję Key / Value) ...

Dzięki wszystkim!!

Sean

questionAnswers(2)

yourAnswerToTheQuestion