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