c# - Orderby Ascending on a list 错误asp.net

标签 c# asp.net linq model-view-controller ef-code-first

<分区>

大家好,我正在构建一个允许用户提交帖子的应用程序,我正尝试在列表中按升序使用 orderby,但出现此错误

错误

The model item passed into the dictionary is of type 'System.Linq.OrderedEnumerable'2[myproject.Models.NewsPostVM,System.Nullable'1[System.Int32]]', but this dictionary requires a model item of type 'System.Collections.Generic.List'1[myproject.Models.NewsPostVM]'. Controller

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>
}

最佳答案

在分配模型数据之前,您必须调用 ToList:

var post= posts.OrderBy(m => m.ID).ToList();
return View(post);

或者,您可以更改模型以让您的 View 接受 IEnumerable(如果您只是通过它使用 foreach,IEnumerable 就可以):

@model IEnumerable<MyProject.Models.NewsPostVM>

关于c# - Orderby Ascending on a list 错误asp.net,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42023796/

相关文章:

linq - 如果 linq 查询返回空,它会返回 null 吗?

c# - 我如何对此进行 LINQify?

c# - SSRS 报告查看器加载缓慢

c# - 无论选择什么,ComboBox都会显示System.Data.DataRowView。 ItemTemplate问题

c# - 如何使用c#/VB.NET在word中插入书签

c# - 寻求通用的基于上下文的存储

c# - 如果 C# 中的文件夹中存在文件名更改

c# - 查找类似图像

c# - 将模型从一个 Controller 传递到 MVC3 中的另一个 Controller 不起作用

c# - 如何从列表列表创建新列表,其中元素在新列表中的顺序不同?