Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Orderby在列表上升序错误asp.net_C#_Asp.net_Linq_Model View Controller_Ef Code First - Fatal编程技术网

C# Orderby在列表上升序错误asp.net

C# Orderby在列表上升序错误asp.net,c#,asp.net,linq,model-view-controller,ef-code-first,C#,Asp.net,Linq,Model View Controller,Ef Code First,大家好,我正在构建一个允许用户提交帖子的应用程序,我正在尝试按升序在列表中使用orderby,但我遇到了这个错误 错误 传递到字典的模型项的类型为“System.Linq.OrderedEnumerable”2[myproject.Models.NewsPostVM,System.Nullable'1[System.Int32]],但此字典需要类型为“System.Collections.Generic.List'1[myproject.Models.NewsPostVM]”的模型项。 控制器

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

错误

传递到字典的模型项的类型为“System.Linq.OrderedEnumerable”2[myproject.Models.NewsPostVM,System.Nullable'1[System.Int32]],但此字典需要类型为“System.Collections.Generic.List'1[myproject.Models.NewsPostVM]”的模型项。 控制器

看法

@型号列表
@foreach(模型中的var p)
{
@p、 标题
@p、 身体

@foreach(p.Images中的var图像) { } @p、 日期 }
在分配模型数据之前,必须调用模型数据上的
列表

var post= posts.OrderBy(m => m.ID).ToList();
return View(post);
或者,您可以更改视图的模型以接受IEnumerable(如果您只是使用foreach,IEnumerable是可以的):

@model IEnumerable

因为您使用“var”作为变量类型,编译器选择IOrderedEnumerable作为最合适的类型。但是,您的视图需要一个列表

使用“ToList”强制将结果设置为列表:

var post= posts.OrderBy(m => m.ID).ToList();
通过指定以下变量类型,可以避免这种意外行为:

IList<NewsPostVM> posts = posts.OrderBy(m => m.ID).ToList();
IList posts=posts.OrderBy(m=>m.ID.ToList();

更改模型定义以接受IEnumerable
@model IEnumerable
或添加
ToList()
以从控制器返回如下列表:
var post=posts.OrderBy(m=>m.ID).ToList()
Use
var posts=db.NewsPosts.OrderByx=>x.ID)
和delete
var post=posts.OrderBy(m=>m.ID)-答案更有效(但不要使用
var
,这是显而易见的)谢谢你,你已经解决了我的问题,当我can@ARandomUserNamedChuck很好,如果jsu无法将IEnumerable分配给列表,则第二行将无法编译。如果您是正确的。也将其更改为使用.ToList()。这是一个稍微多一点的代码,但可以确保新用户不会“神奇地”改变变量类型。
@model IEnumerable<MyProject.Models.NewsPostVM>
var post= posts.OrderBy(m => m.ID).ToList();
IList<NewsPostVM> posts = posts.OrderBy(m => m.ID).ToList();