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