枚举Linq查询结果

smo*_*ips 2 .net c# linq foreach enumeration

我有一些.NET 4.5代码:

var result = db.storedProcedure(param)
if (!result.Any()) { return; }
foreach (var entry in result)
{
    // Some code...
}
Run Code Online (Sandbox Code Playgroud)

foreach,抛出异常:

The query results cannot be enumerated more than once.
Run Code Online (Sandbox Code Playgroud)

如何检查是否result为空?我也尝试过if (result.Count() == 0),它也会在foreach循环中抛出相同的异常.我也试过了foreach (var entry in result.ToList()),也抛出同样的异常.

我试着按照这里这里的建议,没有运气.

我也尝试过:

var result = db.storedProcedure(param)
if (!result.Any()) { return; }
var resultList = result.ToList();
foreach (var entry in resultList) {}
Run Code Online (Sandbox Code Playgroud)

而且我仍然在该foreach循环中得到相同的异常.

必须有一些方法可以轻松检查Linq结果集是否为空.我究竟做错了什么?

Sel*_*enç 7

在迭代之前将结果放入List中:

var result = db.storedProcedure(param).ToList();
if (result.Count == 0) { return; }
Run Code Online (Sandbox Code Playgroud)