IEnumerable - foreach - 查询的结果不能多​​次枚举

时间:2013-08-06 20:49:50

标签: c#

我有以下代码:

public static string ConvertParamToHTMLString(
                            IEnumerable<GetParm_Result> paramList)
{
    foreach (GetParm_Result result in paramList.ToList())
    {
      ...
      ...
    }
}

尝试执行foreach时收到以下消息:

  

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

我认为ToList()会解决这个问题..

2 个答案:

答案 0 :(得分:5)

调用paramList.ToList()一次并将其放入变量中,然后枚举变量:

var list = paramList.ToList();
foreach(var result in list) ...
foreach(var result in list) ...   // No error here

答案 1 :(得分:0)

由于您只显示一次执行,我假设您正在执行查询(使用ToListAsEnumerable或隐式使用foreach)在致电ConvertParamToHTMLString之前。如果是这种情况,那么您可以将结果保存在变量中并多次使用它。实际上,由于您的函数已经接受IEnumerable<T>,因此根本不需要更改该代码!