Привет всем Я в здании приложение, которое позволяет пользователям отправить сообщения, и я пытаюсь использовать OrderBy в списке в порядке возрастания, но я получаю эту ошибкуOrderBy Возрастание на asp.net ошибке список
Ошибка
модели элемент передается в словарь типа 'System.Linq.OrderedEnumerable'2 [myproject.Models.NewsPostVM, System.Nullable'1 [System.Int32]], но этот словарь требует элемента модели типа 'System.Collections.Generic.List'1 [myproject.Models.NewsPostVM]'. контроллер
public ActionResult News()
{
var posts = db.NewsPosts.Select(d => new NewsPostVM()
{
ID = d.ID,
Heading = d.Heading,
Body = d.Body,
Images = d.Images.Select(i => new NewsImageVM()
{
Path = i.Path,
FileName = i.DisplayName
}).ToList()
}).ToList();
var post= posts.OrderBy(m => m.ID);
return View(post);
}
вид
@model List<MyProject.Models.NewsPostVM>
@foreach (var p in Model)
{
<div class="w3-container w3-center">
<h5><b>@p.Heading</b></h5>
<p>@p.Body</p>
@foreach (var image in p.Images)
{
<img class="img-thumbnail" width="150" height="150" src="~/Images/@image.Path" />
}
<h6>@p.Date</h6>
</div>
}
Либо изменить определение модели, чтобы принять IEnumerable '@model IEnumerable' или добавить 'ToList()' для возврата списка из вашего _controller_ следующим образом: 'var post = posts.OrderBy (m => m.ID) .ToList(); ' –
Используйте' var posts = db.NewsPosts.OrderByx => x.ID). Выберите (d => new NewsPostVM() {...}). ToList(); ' и удалите 'var post = posts.OrderBy (m => m.ID);' - его более эффективный ответ (но не используйте 'var', и это было бы очевидно) –