Вероятно, вы захотите использовать библиотеку Linq Dynamic Query , включенную в примеры C # Linq. Таким образом, вы можете написать запрос так:
var groups = Model.GroupBy("SomeColumn, SomeOtherColumn")
... что намного проще в управлении, если вы принимаете имена столбцов от пользователя - скорее всего, все, что у вас есть, - это имена столбцов в виде строк, и эта библиотека автоматически проанализирует их в лямбда-выражениях , (Вам нужно перехватить ParseException
, если вы ожидаете возможность неверного ввода).
Для форматирования ключа вы, вероятно, можете просто передать его непосредственно методу Html.Encode
, так как его строковое представление по умолчанию - что-то вроде { ID = 1, Name = Test }
. Если это достаточно хорошо, я бы оставил это в покое, иначе вам придется использовать Reflection для анализа свойств отдельных ключей и значений свойств.
Редактировать: Вы можете использовать эту библиотеку где угодно, если вы скачаете примеры, вы увидите, что это просто файл исходного кода.