Попытка фильтровать мой список и нажать на вид MVC

У меня есть список типов AdListing в моем домашнем контроллере. Я хотел бы нажимать различные фильтры этого списка в зависимости от строки запроса.

если query == 1, нажмите полный нефильтрованный список

if query == 2, я хотел бы нажать список, где type == "cover" и numpage больше 5

return View(listing.Where(o => String.Equals(o.type, 
 "Cover", 
 StringComparison.InvariantCulture) 
 && o.numPage > 5));

Однако я получаю сообщение об ошибке:

Элемент модели, переданный в словарь, имеет тип "System.Linq.Enumerable + WhereListIterator'1 [Project.Web.Models.AdListing]", но для этого словаря требуется элемент модели типа "Project.Web.Models.AdViewModel".

есть ли способ разрешить это, не изменяя мой viewModel или мой AdListing Object?

1 ответ

Хорошо, во-первых, похоже, что вы пытаетесь передать список объектов в представление, ожидающее одного объекта. Измените свое мнение, чтобы ожидать модель IEnumerable.

Теперь, по вашему запросу, это должно быть так просто:

if (query == 1)
{
 return View(listing);
}
else
{
 return View(listing.Where(o => String.Equals(o.type, "Cover", 
 StringComparison.InvariantCulture) 
 && o.numPage > 5).ToList());
}

licensed under cc by-sa 3.0 with attribution.