MVC视图 - 查询的结果不能多​​次枚举

Oss*_*boy 3 asp.net-mvc razor

我有一个现有的存储过程,当它被调用时,用一周的足球装置填充一个表.

然后,用户将根据下拉列表对每个夹具进行预测,然后我希望使用模型绑定将所有预测插入到一起.

我在我的观点中展示了以下相关代码,目前令我头疼:

@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)
Run Code Online (Sandbox Code Playgroud)

我要做的是添加一个索引,这样我就可以在动作结果中建模bind.

它是在html帮助行,我得到以下错误:

查询的结果不能多​​次枚举.

任何人都可以给我指向正确的方向吗?

Chr*_*att 7

你使用的IEnumerable是一个很好的,当然,但你需要了解你正在使用的是什么.枚举对于循环这样的东西很有用.它们经过优化,显然已被列举,但优化意味着您只能执行此操作一次.

因为枚举并没有真正具有"自身长度"的概念(它是为了将物品吐出物品而构建的,所以这就是全部).它可以使用Count,但它必须计算它,并且是计算枚举它们的成员总数的唯一方法,并在它们经过时计算它们.这意味着你只是运行枚举,所以你的for循环没有任何用处.

解决这个问题的方法是将它转换为不存在此问题的其他类型,例如list.它不像一个可以灵活的效率,但你别无选择.

您既可以使用它ToList(),也可以将其保存到您将用于计数和for循环的var中,或者只使用类似IList<>ICollection<>代替的方式从一开始就转换模型IEnumerable<>.