C# 我正试图从数据库中输出所有数据,但foreach语句中有一个错误
我正试图从数据库中输出所有数据,但我的foreach语句中有一个错误,在2天内无法解决 控制器文件:C# 我正试图从数据库中输出所有数据,但foreach语句中有一个错误,c#,asp.net-mvc,razor,C#,Asp.net Mvc,Razor,我正试图从数据库中输出所有数据,但我的foreach语句中有一个错误,在2天内无法解决 控制器文件: public ActionResult Index() { PAPEntities db = new PAPEntities(); MoviesData[] movies = db.MoviesData.ToArray(); movies.Select(movie => new MovieViewModels {
public ActionResult Index()
{
PAPEntities db = new PAPEntities();
MoviesData[] movies = db.MoviesData.ToArray();
movies.Select(movie => new MovieViewModels
{
MovieID = movie.MovieID,
MovieName = movie.MovieName,
MovieDescription = movie.MovieDescription,
MoviePrice = movie.MoviePrice,
MovieCategory = movie.MovieCategory,
MovieYear = movie.MovieYear
});
return View(movies);
}
观点:
<table class="table table-bordered table-responsive table-hover">
<tr>
<th><b>Movie Name </b></th>
<th><b>Movie Category </b></th>
<th><b>Movie Year </b></th>
<th><b>Movie Price</b></th>
</tr>
@foreach (var item in Model)
{
<tr>
<td>@item.MovieName</td>
<td>@item.MovieCategory</td>
<td>@item.MovieYear
<td>@item.MoviePrice</td>
</tr>
}
</table>
电影名称
电影类别
电影年
电影价格
@foreach(模型中的var项目)
{
@item.MovieName
@项目.电影类别
@项目.电影年
@项目.电影价格
}
该模型是一个简单的类缩放MovieViewModel,具有6个属性
foreach语句无法对“MovieViewModels”类型的变量进行操作,因为“MovieViewModels”不包含“GetEnumerator”的公共实例定义
Select
MoviesData
对象的实际实例是没有意义的,因此:
(注意:我冒昧地将moviewmodels
重命名为moviewmodel
)
MovieViewModel[]movies=db.MoviesData.Select(movie=>newmovieviewmodel
{
MovieID=movie.MovieID,
MovieName=movie.MovieName,
MovieDescription=movie.MovieDescription,
MoviePrice=movie.MoviePrice,
MovieCategory=movie.MovieCategory,
MovieYear=movie.MovieYear
}).ToArray();
返回视图(电影);
(这也意味着SQL可能仅限于您感兴趣的列,从而避免获取不必要的列)
然后在视图中,您应该具有:
@model MovieViewModel[]
它告诉razor要用于模型的类型
这样做:事情应该会成功。问题在于您使用的select语句<代码>选择
在对其应用“获取结果”函数之前不会返回结果。e、 gToList()
或ToArray()
等
您需要在select语句之后应用ToArray()
方法以在枚举器中获得结果
MovieViewModel[] movies = db.MoviesData.Select(movie => new MovieViewModel
{
MovieID = movie.MovieID,
MovieName = movie.MovieName,
MovieDescription = movie.MovieDescription,
MoviePrice = movie.MoviePrice,
MovieCategory = movie.MovieCategory,
MovieYear = movie.MovieYear
}).ToArray();
请显示视图如何声明其模型。我想这就是问题所在。还要注意,您的
Select
调用实际上不会做任何事情。。。。LINQ不是这样工作的。我怀疑您想要var movies=db.MoviesData.Select(movie=>newmovieviewmodels{…}).ToList()
或类似。视图上的@型号是什么?i、 e.型号
的类型是什么?我怀疑它是moviewmodels
,而它应该是IEnumerable
(注意:列表或数组可能会更好,但也需要对Index()
方法进行相应的更改)。附带说明:当某个东西只代表一个项目时调用它肯定会引起混淆-moviewmodel
会更好。编辑:正如Jon所指出的,你需要对Index()
进行更改,因为你没有捕获Select
的返回,目前它没有IEnumerable,但我也尝试了IEnumerable,但它不起作用,我会尝试你说的方式并给你反馈。我知道我不应该在评论中说谢谢,然而,我只是一个新手(你可能注意到了),我真的需要感谢那些花时间帮助新手的人。谢谢你,也感谢你所做的一切help@DiogoTeixeira说“谢谢”并不违反任何规则,评论也非常适合:)