Есть несколько похожих звуковых сообщений, но никто из них не делает именно то, что я хочу.Как динамически GroupBy с использованием Linq
Итак, представьте себе, что у меня есть следующая структура данных (упрощенный для данного примера LINQPad)
public class Row
{
public List<string> Columns { get; set; }
}
public List<Row> Data
=> new List<Row>
{
new Row { Columns = new List<string>{ "A","C","Field3"}},
new Row { Columns = new List<string>{ "A","D","Field3"}},
new Row { Columns = new List<string>{ "A","C","Field3"}},
new Row { Columns = new List<string>{ "B","D","Field3"}},
new Row { Columns = new List<string>{ "B","C","Field3"}},
new Row { Columns = new List<string>{ "B","D","Field3"}},
};
для свойства «Data», то пользователь будет сказать мне, какой столбец числительные в GroupBy; они могут сказать «не группировать ничего», или они могут сказать «группа по столбцу [1]» или «группа по колонке [0] и столбец [1]».
Если я хочу, чтобы сгруппировать по одной колонке, я могу использовать:
var groups = Data.GroupBy(d => d.Columns[i]);
И если я хочу, чтобы сгруппировать по 2 колонки, я могу использовать:
var groups = Data.GroupBy(d => new { A = d.Columns[i1], B = d.Columns[i2] });
Однако число столбцов - переменная (ноль -> много); Данные могут содержать сотни столбцов, и пользователю может понадобиться десятки столбцов GroupBy.
Итак, вопрос в том, как я могу создать этот GroupBy во время выполнения (динамически)?
Благодаря
Griff
Вы могли бы как-то построить Lambda Expressions [очень похоже на этот ответ на очень похожий вопрос о динамическом OrderBy] (http://stackoverflow.com/a/233505/424129). –