Начните с рефакторинга и поместите правильную логику в нужное место. Этот запрос LINQ не имеет ничего общего с представлением. Представление не должно выполнять какие-либо запросы LINQ или что-либо еще для извлечения данных. Предполагается, что представление работает с данными, которые передаются ему из действия контроллера в форме модели представления. Действие контроллера создает и передает адаптированную модель представления, которую вы определили для представления.
Поэтому, как всегда, вы начинаете с определения модели вида, которая будет адаптирована к требованиям вашего вида:
public class MyViewModel
{
public IEnumerable<Brand> Brands { get; set; }
}
затем вы пишете действие контроллера, которое заполнит эту модель представления и передаст его представлению:
public ActionResult Foo()
{
IEnumerable<products_comparison.Models.Product> products = ...
var model = new MyViewModel
{
Brands = (from r in Model select r.Brand).Distinct()
};
return View(model);
}
затем просмотр:
@model MyViewModel
<table>
<tr>
<th>
Brand
</th>
</tr>
@Html.DisplayFor(x => x.Brands)
</table>
и, наконец, вы можете определить соответствующий шаблон отображения, который будет автоматически отображаться для каждого элемента коллекции Brands
вашей модели представления (~/Views/Shared/DisplayTemplates/Brand.cshtml
):
@model Brand
<tr>
<td>
@Html.DisplayForModel()
</td>
</tr>