Asp.net mvc MVC视图-查询结果不能多次枚举
我有一个现有的存储过程,当它被调用时,它会在一个表中填充几个星期的足球比赛 然后,用户将从下拉列表中对每个装置进行预测,然后我希望使用模型绑定将所有预测插入到一起 从我的观点来看,我已经展示了下面的相关代码,这让我感到头疼:Asp.net mvc MVC视图-查询结果不能多次枚举,asp.net-mvc,razor,Asp.net Mvc,Razor,我有一个现有的存储过程,当它被调用时,它会在一个表中填充几个星期的足球比赛 然后,用户将从下拉列表中对每个装置进行预测,然后我希望使用模型绑定将所有预测插入到一起 从我的观点来看,我已经展示了下面的相关代码,这让我感到头疼: @model IEnumerable<PPLMVCNewOne.Models.sp_getMakeYourPredictions_Result> @for (int i = 0; i < Model.Count(); i++) { &l
@model IEnumerable<PPLMVCNewOne.Models.sp_getMakeYourPredictions_Result>
@for (int i = 0; i < Model.Count(); i++)
{
<tr>
<td>
@Html.DisplayFor(m => m.ElementAt(i).Home_Team)
@model IEnumerable
@对于(int i=0;im.ElementAt(i).Home\u团队)
我试图做的是添加一个索引,这样我就可以在操作结果中建模绑定
在html帮助程序行中,我得到以下错误:
查询结果不能枚举多次
有人能给我一个指向正确方向的指针吗?让操作通过调用ToList()返回IList而不是IEnumerable 将视图更改为此
@model IList<PPLMVCNewOne.Models.sp_getMakeYourPredictions_Result>
@for (int i = 0; i < Model.Count(); i++)
{
<tr>
<td>
@Html.DisplayFor(m => m.ElementAt(i).Home_Team)
...
@model-IList
@对于(int i=0;im.ElementAt(i).Home\u团队)
...
您使用的是一个IEnumerable
,当然这很好,但您需要了解您使用的是什么。枚举对于for循环之类的事情非常有用。它们经过优化,显然可以重复枚举,但优化意味着您只需要执行一次
由于枚举实际上没有“自身长度”的概念(它的构建目的是吐出一个项,直到它用完为止,仅此而已)。它可以使用Count
,但它必须计算该值,这是计算成员总数的唯一方法,可以枚举成员并在成员经过时对其进行计数。这意味着您刚刚运行了枚举,因此for循环没有可用的内容
解决这个问题的方法是将它转换为一个不同的类型,比如list,它没有这个问题。它没有可枚举的那么有效,但是你别无选择
您可以使用
ToList()执行此操作
然后将其保存到一个var中,用于计数和for循环,或者从一开始就使用类似于IList
或ICollection
的方法来强制转换模型,而不是IEnumerable
当我将项目列表作为IEnumerable返回时,一直出现此错误。我想手动检查如果正确的信息从数据库返回,那么,当我点击断点时,我会检查IEnumerable的内容。我不知道,直到我读到答案,我才阻止它在下面被再次枚举,也就是它被处理的地方