Вы можете сделать это, как вам угодно, честно говоря (одна из вещей, которые мне нравятся в MVC, вообще не навязывать вам свои дизайнерские решения), но многие люди находят этот вид преобразования лучше всего сделать в Контроллере, или более конкретно путем преобразования модели в модель представления.
По сути, идея заключается в том, что если контроллер является своего рода посредником, который переводит пользовательский ввод в действия модели и возвращает данные модели в представление удобным для использования способом, то вы бы также сделали какое-то отображение, которое обрабатывает перевод данные из необработанной модели в нечто, распознаваемое представлением.
Итак, что я видел в этом случае, так это то, что какая-то логическая модель будет создана в той же сборке, что и контроллеры, что-то (в вашем случае), например:
public class RestarauntViewModel : IDictionary<string, IEnumerable<Restaraunt>>
{
public RestarauntViewModel(IEnumerable<Restaraunt>)
{
// your transform code that you had in the view
}
}
Это сохраняет вид относительно чистым и позволяет при необходимости изменять логику того, что выбрано в каждой группе и т. Д., Не касаясь любых видов, которые могут его использовать.