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

本文关键字:枚举 不能 结果 查询 IEnumerable-forach- | 更新日期: 2023-09-27 18:26:36

我有以下代码:

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

当它尝试执行foreach时,我收到以下消息:

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

我认为ToList()可以解决这个问题。。

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

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

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

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